我正在测试如何在C中使用extern,所以我为main.c,test.c和headfile.h创建了三个文件。我想在headfile.h中声明变量和函数,在test.c中定义,然后在main.c中打印出变量并调用函数 它可以通过使用Dev c ++成功运行,但是,当我将完全相同的文件放入VScode时,它会显示错误,指出未定义变量引用
错误消息 enter image description here
#include <stdio.h>
#include <stdlib.h>
#include"D:\My Documents\Desktop\CODE\c\VScode\externTest\headfile.h"
int gVar = 1;
int main(void)
{
extern float a;
printf("a = %f\n",a);
printf("gVar = %d\n",gVar);
printf("aa = %d\n",aa);
printf("bb = %f\n",bb);
function ();
system("pause");
return 0;
}
#include <stdio.h>
#include "D:\My Documents\Desktop\CODE\c\VScode\externTest\headfile.h"
float a = 100;
int aa = 200;
float bb = 300;
void function (void){
printf("yeh you got it!!\n");
extern int gVar;
gVar++;
printf("gVar in test.c function = %d",gVar);
}
extern int aa;
extern float bb;
void function(void);
答案 0 :(得分:1)
您的main.c
文件似乎未与test.c
链接。
我已经能够使用以下编译命令来重现完全相同的错误消息:
$ gcc main.c
/tmp/ccVqEXL5.o: In function `main':
main.c:(.text+0x8): undefined reference to `a'
main.c:(.text+0x38): undefined reference to `aa'
main.c:(.text+0x51): undefined reference to `bb'
main.c:(.text+0x69): undefined reference to `function'
collect2: error: ld returned 1 exit status
要解决此问题,只需通过执行test.c
将gcc main.c test.c
文件添加到编译中即可。
答案 1 :(得分:1)
如果您试图包括额外的类文件,而这是您的原始运行命令:
cd "c:\myfolder\" ; if ($?) { g++ mainfile.cpp -o mainfile } ; if ($?) { .\mainfile}
添加额外的文件名(例如,Shape.cpp和Circle.cpp):
cd "c:\myfolder\" ; if ($?) { g++ mainfile.cpp Shape.cpp Circle.cpp -o mainfile } ; if ($?) { .\mainfile}
然后再次运行
答案 2 :(得分:0)