这段代码中vextern的用途是什么?

SSS*_*SSS 0 c linux gcc

我有一些使用vextern的c代码,如下所示,并想知道这是什么目的:

file1.c中:

#define FILE1_G_
Run Code Online (Sandbox Code Playgroud)

file1.h:

#ifdef FILE1_G_
# define vextern
#else
# define vextern extern
#endif
Run Code Online (Sandbox Code Playgroud)

asa*_*elr 5

我想这define用于仅在一个文件中定义变量,但在包含此标头的所有文件中声明它们.

如果在file1.h,你有vextern int a;,并且在一些.c文件中包含此文件,则该变量a将仅在具有该行的文件中定义#define FILE1_G_.(在你的例子中file1.c)