我正在开发一个嵌入式 c 项目,并且遇到了全局变量重新定义的问题。
我已将函数声明和定义拆分为几个 .h 和 .c 文件。其中许多函数需要访问 global_vars.h 中定义的全局变量。因此,在头文件的开头,#ifndef,#define 部分,“global_vars.h”。如果我不这样做,就像您想象的那样,我会收到一堆未定义的变量错误。
但是,即使 global_vars.h 具有 #ifndef _GLOBAL_VARS_H_ #define...#endif,我也会收到所有全局变量的重新定义错误。我的猜测是,当链接器尝试链接各种目标文件时,由于所有“blah_blah.h”文件中的#include“global_vars.h”,它会看到重新定义。不过,我的理解是,#ifndef... 会处理这个问题。
有什么我忽略的吗?
提前致谢