头文件层次结构中的extern变量

时间:2013-01-19 06:57:20

标签: c++ extern

为什么我无法访问file.cpp文件中定义的变量值。假设它与main相关联。棘手的部分是间接包含变量值。主要功能包括header1.h,其中包含file.h,其变量值为extern。 extern可以像这样在标题链中传播

1)file.h

extern int value;

2)file.cpp

#include "file.h"
int value = 25;

3)header1.h

#include "file.h"
const int const_value = 100;

4)main.cpp

#include "header1.h"
int main(char *argv[], int args) {
int result = value*10;      
    return result;
}

1 个答案:

答案 0 :(得分:1)

是的,extern可以通过这种方式传播。编译器只需要看到变量在使用点被声明为extern,它与哪个标头无关。头文件的内容仅由预处理器粘贴在源文件的顶部。所以编译器甚至不知道头文件。

但是,最好在该头文件中单独包含编译源文件所需的所有头文件。维护这样的代码要容易得多。

只需在file.h中添加main.cpp,对于您的代码的读者来说就会更加直观。