vscode中使用c语言的extern
初学c语言,使用vscode作为开发工具,了解到extern可以使用外部文件的全局变量,故建立两个文件,分别如下:
test.c
#include <stdio.h>
extern int g_value;
int main(void){
printf("main: %d\n", g_value);
return 0;
}
test1.c
#include <stdio.h>
int g_value = 2023;
运行test.c文件,出现报错如下:
经过查询得知,报错的原因是vscode默认只支持单文件编译,因此在运行test.c的时候,test1.c并没有编译,因此报错。
为了解决这个问题,需要更改设置,步骤如下:
在setting中搜索code runner
将setting.json中c语言的编译从$fileName 更改为 *.c
保存文件,再次运行test.c文件,成功运行
但在后续的使用中,发现这样子修改会引发其他问题:
在相同目录下,新建一个名为test2.c的文件
其中test2.c的内容如下:
#include <stdio.h>
int main(){
printf("hello wolrd\n");
return 0;
}
运行此文件,发生报错
根据内容,可知是因为存在多个main函数,想到和之前更改的编译设置有关,将test2.c文件存放于其他文件夹中
分别运行test1.c和test2.c,运行正常:
总结:
vscode中使用extern时,由于vscode默认单文件编译,需要更改vscode的编译设置。但更改之后,由于支持多文件编译,后续新建源文件的时候,需要分在不同的文件夹中,否则会导致编译出现多个main函数,导致编译出错。