头文件层次结构中的外部变量

extern variable in hierachy of header file

本文关键字:外部 变量 文件 层次结构      更新时间:2023-10-16

为什么我不能访问file.cpp文件中定义的变量值?假设它与main链接。棘手的是变量值是间接包含的。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;
}

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

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

简单地说,将file.h包含在main.cpp中,对于代码的读者来说,这将更加直观。