c - 为什么以下程序有效

标签 c extern

我写了下面的程序

#include<stdio.h>
 main ()
{
        extern int i;
        printf("\n%d",i);
}
int i=30;

我期待一条错误消息,因为我是在 main 之后初始化的,但相反,程序给了我输出。为什么它没有给我错误是我想知道的。

最佳答案

extern 的全部目的是说“在项目的某处有一个名为 iint 类型的变量,它稍后可能会链接。假设它存在。

您可以在一个完全独立的 .c 文件中定义 i,只要您链接 .o 文件,它仍然可以工作一起。 这就是 extern 所做的

这就像您可以声明并使用一个函数,即使它是在一个完全独立的 .c 文件中定义的(或者,实际上,稍后在同一个文件中)。

阅读你的 C 书中关于 extern 的章节。

关于c - 为什么以下程序有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6317982/

相关文章:

c++ - 是否可以从 gcc 的源代码中确定或设置编译器选项?

c++ - 有人能弄清楚这有什么问题吗?我收到链接错误

c - 在 main 之前初始化自定义输出流

C++:实现一个全局常量,其值由用户给出

c - Mac OS Maverick for C 的基本 Cmake 和 make

c - 为什么指针变量经过多个函数后会发生变化

c++ - C++ 中二维数组初始化错误

objective-c - "FOUNDATION_EXPORT"与 "extern"

c++ - 声明变量时extern undefined reference错误

c - MIPS 反转位代码(从 C 代码转换)......但它不起作用