How can I avoid the LNK2005 linker error for variables defined in a header file?

后端 未结 7 1459
情话喂你
情话喂你 2020-12-19 09:28

I have 3 cpp files that look like this

#include \"Variables.h\"
void AppMain() {
    //Stuff...
}

They all use the same variables inside th

7条回答
  •  抹茶落季
    2020-12-19 10:06

    Keep in mind that a #include is roughly like cutting and pasting the included file inside the source file that includes it (this is a rough analogy, but you get the point). That means if you have:

    int x;  // or "slider" or whatever vars are conflicting
    

    in the header file and that header file is included by three source files in a program, then they will all have a global named x defined that will conflict.

    What you want to do is define the variable as extern so that the .cpp files will all get the declaration, and then in ONE of your .cpp files give the actual definition.

    in Variables.h:

    extern int x;
    

    in SomeSourceFile.cpp

    int x;
    

    Of course, I'd recommend against globals, but if you must use them this would keep them from conflicting.

提交回复
热议问题