我正在开发嵌入式c项目,并且遇到了全局变量重定义方面的问题。变量重定义,嵌入式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 ...处理这个问题。
有什么我可以忽略?
在此先感谢
您需要在头文件中声明变量,并且只在一个源文件中定义它们。 – forsvarir 2011-06-16 21:27:55
您的'global_vars.h'文件应该将所有变量声明为'extern',然后在一个单独的模块中实际定义它们。我猜你不会这样做? – 2011-06-16 21:29:00
你是对的。我会试试这个,谢谢 – Trey 2011-06-16 21:37:01