在a.h
我有
#ifndef A_H
#define A_H 1
const int global_val = 10;
#endif
在a.c
我有
#include "a.h"
int someFunc() {
return global_val;
}
但是编译器 (gcc( 在编译a.c
时抛出error: 'global_int' undeclared
。当我包含头文件时,它怎么可能未声明?
你应该有两个文件。
啊
#ifndef A_H
#define A_H 1
extern const int global_val;
#endif
和
交流电
#include "A.h"
const int global_val = 10;
我发现了问题。我删除了所有的.o
、.gch
和可执行文件,代码又开始编译。我的猜测是预编译的标头(我什至不记得制作(欺骗了编译器。
我没有关闭问题,而是决定留下这个答案,以防它对某人有帮助。