This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Declaration of global variables in one header file

Hello everyone,

I'm trying to split the C source code of one file into nearly 10 different. It does not work properly due to global variables declared in one header file but used in more than one C files. Compiling of such a project works fine but the linking errors L104 and L118 occur.

My question: How can I prevent this errors without creating one header file for every C file?

My idea is the following, but it is complicated and additionally unsure if it works:

#ifdef CPVAR
extern unsigned char global_var1;
extern unsigned int global_var2;
extern unsigned long global_var3;
#elseif
unsigned char global_var1;
unsigned int global_var2;
unsigned long global_var3;
#define CPVAR
#endif

Maybe one of the experts knows a less complicated opportunity to prevent (these) linker errors.

Parents
  • sorry, about missing the preview, the highlights in my previous post are all wrong. I was fighting an intruder at the same time.

    Your fervor to rebuke me seems to have overpowered your ability to convey your point.
    rebuke???, I agreed with you. I supported your statement "While many will decry what you're trying to do with global variables to be heresy" which, as shown by your post you do not.

    I'm not sure where the discussion of the relative "purity" of anything came up? Can you elaborate on what you mean?
    Those that "decry what you're trying to do with global variables to be heresy" are the same that like yo use the expression "not real C" about anything that is legible.

    Erik

Reply
  • sorry, about missing the preview, the highlights in my previous post are all wrong. I was fighting an intruder at the same time.

    Your fervor to rebuke me seems to have overpowered your ability to convey your point.
    rebuke???, I agreed with you. I supported your statement "While many will decry what you're trying to do with global variables to be heresy" which, as shown by your post you do not.

    I'm not sure where the discussion of the relative "purity" of anything came up? Can you elaborate on what you mean?
    Those that "decry what you're trying to do with global variables to be heresy" are the same that like yo use the expression "not real C" about anything that is legible.

    Erik

Children