如何在多个.c文件中定义全局变量
假设有一个头文件:啊和源文件:a1.c a2.c … an.c; n> = 1,这意味着它可能只有一个源文件,或者有几个源文件。
我的问题是如何定义一个全局变量g啊; 这应该是a1.c … an.c.
有限制:
-
在a1.c a2.c … an.c; “啊”只能包含在第一行,这意味着在#include“啊”之前的源文件中应该没有代码
-
g必须在啊中定义
-
只能通过以下方式编译代码:
gcc -c a1.c -o a1.o ... gcc -c an.c -o an.o gcc -o a.exe a1.o ... an.o
有一个答案定义g在这样啊:extern int g; 但是,根据c的规范J.5.11; 这是未定义的行为。
有没有其他解决方案?
如上所述,必须在c文件中定义变量,声明应位于头文件中。
您必须在任何c文件中定义全局变量,并在头文件中声明’extern’。
例)
1) define global variable in a1.c int g; 2) declare global variable in ah extern int g; 3) include header file in other c files #include "ah" // to do something