c++ - 在多个 Cpp 文件中使用变量

标签 c++ scope header-files ld extern

搜索了足够多的答案,但没有一个解决方案适合我。

场景: 我试图包含一个 .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::somethingabc::abc::something 不同

关于c++ - 在多个 Cpp 文件中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064879/

相关文章:

c++ - 当项目依赖于用旧 c++ 编译的 .so 库时,用 c++11 编译

C++ vector 构造函数和赋值问题

javascript - 在函数内部使用公共(public)变量

c++ - 前向声明、 header 和内联

c++ - 在 header 中定义全局数组的模板技巧

c# - 如何使用 Windows API 获取其他应用程序中的当前事件?

c++ - 如何迭代打印 SET (STL) 中的元素

php - 如何访问类对象中的数组值?

javascript - 如何获取进程nodejs的局部范围内的所有变量

c - 在两个项目之间同步单个c头文件