1.一个工程里只能有一个main函数,另一个要改名
2.文件2里面想使用文件1里面定义的变量a,要先include 文件1,否则肯定报错变量没有定义
3.extern要写在文件2里,而不是文件1里,文件1里正常定义int a,文件2里写extern int a,表示想要共享文件1里的变量而不是新建变量
4.既然你想要共享文件1里的变量,那么肯定是想要共享它的值,那么extern int a这里就不要对它初始化赋值
用法没搞清楚导致,一种比较标准的做法是,
引用全局变量是加上extern关键字,
在出处也就是定义的地方不要加extern。
还有就是引用的同时不能初始化,因为引用就是声明的意思,表示这个变量在其它地方被定义了,告诉编译器。
例如文件1.c中定义a
int a=1;
然后我们在2.c中声明这个a
extern int a;//这里不要赋值,要赋值等我们使用的时候再给它赋值就行
不知道这样说,你能不能看懂!
我能够解决该问题。
针对该问题,首先需要检查以下几点:
除此之外,还需要注意以下几点:
针对以上问题,可以采取以下解决方案:
// 文件1: main.c int a = 1; // 定义全局变量a
int main() { // do something return 0; }
// 文件2: extern2.c extern int a; // 使用extern关键字访问变量a
void func1() { // do something with variable a }
编译命令可以为:
gcc -o myprogram main.c extern2.c
其中,myprogram是可执行文件的名称,main.c和extern2.c是需要编译的源文件。
这样编译后,就会生成一个名为myprogram的可执行文件,可以直接运行。
需要注意的是,在使用extern关键字时,需要在使用变量的文件中进行声明,否则会出现找不到变量的错误。同时,也需要确保文件的编译顺序正确,即先编译定义变量的文件,再编译使用变量的文件。
以上就是针对问题的解决方案,希望能对您有所帮助。
你怎么有两个main?其中一个要改名
而且你用extern int a;
另一个程序要写 int a;对应