Mar*_*n B 102
您应该在头文件中声明该变量:
extern int x;
Run Code Online (Sandbox Code Playgroud)
然后在一个 C文件中定义它:
int x;
Run Code Online (Sandbox Code Playgroud)
在C中,定义和声明之间的区别在于定义为变量保留空间,而声明仅将变量引入符号表(并且会导致链接器在链接时间时查找它) .
Hen*_*man 34
您可以(应该)extern在头文件中声明它,并在正好1 .c文件中定义它.
请注意,该.c文件也应使用标头,标准模式如下所示:
// file.h
extern int x; // declaration
// file.c
#include "file.h"
int x = 1; // definition and re-declaration
Run Code Online (Sandbox Code Playgroud)
Vic*_*cky 11
如果你声明它
int x;
Run Code Online (Sandbox Code Playgroud)
在一个头文件中,然后包含在多个地方,你最终会得到多个x实例(可能会编译或链接问题).
解决这个问题的正确方法是让头文件说出来
extern int x; /* declared in foo.c */
Run Code Online (Sandbox Code Playgroud)
然后在foo.c中你可以说
int x; /* exported in foo.h */
Run Code Online (Sandbox Code Playgroud)
您可以在任意多个位置包含头文件.