使用 extern 关键字未定义的引用变量

问题描述 投票:0回答:1

我在同一个文件夹中有两个C文件:

文件1.c

#include <stdio.h>

int a;

int main()
{
    a = 1;
    printf("%d",a);
    return 0;
}

file2.c

#include <stdio.h>

extern int a;

int main()
{
    a = 1;
    printf("%d",a);
    return 0;
}

我在 vscode 上运行 file2.c 及其返回:

C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/12.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:C:\Users\Duong\AppData\Local\Temp\cc8Tiaj4.o:file2.c:(.rdata$.refptr.a[.refptr.a]+0x0): undefined reference to `a'
collect2.exe: error: ld returned 1 exit status

我尝试了很多方法,包括添加头文件,但根本不起作用。

有人可以告诉我我的代码或编译器是否有任何问题

c visual-studio-code extern undefined-reference
1个回答
0
投票
  1. 您需要编译并链接这两个文件。
  2. 不能有两个同名的函数。由于您在两个文件中都定义了
    main
    函数,因此证明您没有将它们链接在一起。

文件1.c

#include <stdio.h>

int a;

file2.c

#include <stdio.h>

int main()
{
    a = 1;
    printf("%d",a);
    return 0;
}

然后从命令行编译并链接它们

gcc -o main file1.c file2.c

Visual Studio 代码不适合初学者,因为它需要一些配置并了解其工作原理。

安装 Eclipse CDT,它可以毫无问题地为您管理项目

© www.soinside.com 2019 - 2024. All rights reserved.