搜索了足够多的答案,但没有一个解决方案适合我。
场景: 我试图包含一个 .h 文件,其中声明了一些函数(未定义)和声明了一些变量。
如果我将这个头文件包含在实际使用函数和变量的源文件(准确地说是 2 个)中,那么最后一个编译的文件会出现链接器错误,指出
undefined reference to `abc::myfun(char const*, char const*, char*)'
头文件中的所有函数和变量都已声明为 extern 并且存在包含保护。
我希望有一个 cpp 文件在 .h 文件和另一个 cpp 文件中定义的变量中放入一个值以便能够读取它。
此外,如果有帮助,我的每一段代码都在我定义的命名空间中(namespace abc{//all my code, in all the files }
)
最佳答案
声明在你的.h
文件正是这样做的——让编译器知道您计划在“某处”声明的对象。该“某处”将是一个编译单元(.c
或 .cpp
文件),其中将定义该变量。
这是一个示例(为简单起见跳过守卫):
foo.h
:
extern int global_foo;
foo.c
:
#include "foo.h"
int global_foo; // optionally you can initialize like this: int global_foo = 123;
main.c
:
#include "foo.h"
void bar()
{
global_foo = 0; // accessing that variable which is "outside" of this file
正如上面提到的 paddy - 确保你没有意外嵌套命名空间,因为 abc::something
与 abc::abc::something
不同
关于c++ - 在多个 Cpp 文件中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064879/