假设有一个头文件:a.h 和源文件:a1.c a2.c ... an.c; n>=1,表示可能只有一个源文件,也可能有多个源文件。
我的问题是如何在a.h中定义一个全局变量g; a1.c ... an.c 应该可以看到它。
有限制:
在 a1.c a2.c ... an.c 中; "a.h"只能包含在第一行,即#include "a.h"行之前源文件中不能有任何代码
g 必须在 a.h 中定义。
只能通过以下方式编译代码:
gcc -c a1.c -o a1.o ... gcc -c an.c -o an.o gcc -o a.exe a1.o ... an.o
有一个答案在 a.h 中定义 g 如下: 外部整数g; 然而,根据c的规范J.5.11;这是未定义的行为。
还有其他解决办法吗?
最佳答案
正如您所说,变量必须在c文件中定义,并且声明应位于头文件中。
您必须在任何 c 文件中定义全局变量并在头文件中声明“extern”。
示例)
1) define global variable in a1.c
int g;
2) declare global variable in a.h
extern int g;
3) include header file in other c files
#include "a.h"
// to do something
关于c - 如何定义跨多个 .c 文件可见的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597924/