我的问题是,在C中何时应该使用关键字extern引用函数.

我不知道什么时候应该在实践中使用它.在我编写程序时,我使用的所有函数都可以通过包含的头文件来使用.那么,为什么访问未在头文件中公开的内容对extern有用呢?

我可能在想extern是如何错误工作的,如果是,请纠正我.

而且如果它是默认声明,而头文件中没有关键字,那么您是否应该 Select extern

推荐答案

extern会更改链接.对于关键字,假定函数/变量在其他地方可用,并将解析推迟到链接器.

函数上的extern个和变量上的extern个是有区别的.

对于variables,它不实例化变量本身,即不分配任何内存.这需要在其他地方完成.因此,如果您想从其他地方导入变量,这一点很重要.

对于functions,这只告诉编译器链接是外部的.由于这是默认值(使用关键字static表示函数未使用外部链接绑定),因此不需要显式使用它.

C++相关问答推荐

int_leastX_t与intX_t不同吗?

修改pGM使用指针填充2-D数组但不起作用

POSIX文件描述符位置

如何将不同长度的位转换成字节数组?

使用NameSurname扫描到两个单独的字符串

特定闪存扇区的内存别名

我的程序在收到SIGUSR1信号以从PAUSE()继续程序时总是崩溃()

预先分配虚拟地址空间的区域

为什么我会收到释放后堆使用错误?

如何计算打印二叉搜索树时每行所需的空间?

关于";*(++p)->;t";、&++p->;t";和&q;++*p->;t";的问题

指向不同类型的指针是否与公共初始序列规则匹配?

C语言中奇怪的输出打印数组

Fscanf打印除退出C代码为1的程序外的所有内容

有没有办法减少C语言中线程的堆大小?

关于不同C编译器中的__attribute__支持

GCC认为这是一个VLA是对的吗?

在列表中查找素数

指向返回 struct 成员的指针,安全吗?

无法在线程内用 C 打印?