如何在多个.c文件中定义全局变量

假设有一个头文件:啊和源文件:a1.c a2.c … an.c; n> = 1,这意味着它可能只有一个源文件,或者有几个源文件。

我的问题是如何定义一个全局变量g啊; 这应该是a1.c … an.c.

有限制:

  1. 在a1.c a2.c … an.c; “啊”只能包含在第一行,这意味着在#include“啊”之前的源文件中应该没有代码

  2. g必须在啊中定义

  3. 只能通过以下方式编译代码:

    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