在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)在编译error: 'global_int' undeclared
时会抛出a.c
。当我包含头文件时,怎么可能不声明它?
答案 0 :(得分:0)
您应该有两个文件。
A.h
#ifndef A_H
#define A_H 1
extern const int global_val;
#endif
和
A
#include "A.h"
const int global_val = 10;
答案 1 :(得分:-1)
我发现了问题。我删除了所有的.o
,.gch
和可执行文件,并且代码再次开始编译。我的猜测是,预编译的标头(我什至不记得制作过)正在欺骗编译器。
我没有关闭问题,而是决定保留此答案,以免对某人有所帮助。