关于extern的使用问题

img

img

img

img


如上图,工作区并没有报错,代码我也是照着网上的来敲的,结果运行不了,为了验证是不是c语言编译器有问题,我直接将当前的源代码改成一个输出hello的源文件结果正常运行。求指教到底是哪里出了问题

这个总感觉是 vscode 的 cmake 没写对,你的代码我的电脑上也可以 你试试 code blocks 或者 visual studio

因为你没有定义变量,所以无法输出

现在解决了,换了个ide就好了,现在用的vs没啥问题,可能是vscode有什么不可告人的秘密吧

【以下回答由 GPT 生成】

解决方案:

根据你提供的问题描述和示例代码,在分析代码之前,先解释一下extern关键字的作用和用法。

在C语言中,extern关键字用于声明一个已经在其他地方定义的全局变量或者函数。它的作用是告诉编译器这个变量或函数是在其他文件中定义的,以便在编译阶段能够正确地引用它。

在你提供的示例代码中,使用了extern关键字来声明一个全局变量x,但是在代码中并没有对这个变量进行定义。因此,编译器在编译阶段会报错,因为它无法找到变量x的定义。

要解决这个问题,你需要在代码中提供x的定义。下面是两种解决方案:

解决方案一: 将变量x定义在同一个源文件中

在示例代码中,你可以在main函数之前添加如下代码来定义全局变量x:

int x = 10; // 定义全局变量x并初始化为10

这样,在使用变量x的地方就不再需要extern关键字了。

解决方案二: 将变量x定义在其他源文件中

如果你希望将变量x定义在另一个源文件中,那么你可以创建一个名为"extern_example.c"的源文件,并在该文件中定义变量x:

int x = 10; // 在extern_example.c文件中定义全局变量x并初始化为10

然后,在示例代码中使用extern关键字声明变量x:

extern int x; // 在主源文件中声明外部变量x

int main() {
    printf("%d", x); // 输出全局变量x的值
    return 0;
}

编译时,将"extern_example.c"文件和主源文件"main.c"一起编译,并链接生成可执行文件。这样就能正常运行代码了。

总结:

问题的原因是使用extern关键字来声明变量x,但是没有提供对变量x的定义。解决这个问题的方法是在代码中提供变量x的定义,可以是同一个源文件中,也可以是其他源文件中,但是在进行编译和链接时需要保证能够找到变量x的定义。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^