【发布时间】:2020-03-11 15:59:41
【问题描述】:
我正在阅读 Brian W. Kernighan 和 Dennis M. Ritchie 所著的C 编程语言一书。
在 A.8.9 部分,书籍如下:
Typedef 名称可以在内部范围内重新声明,但必须是一组非空的类型说明符 给定的。例如,
extern Blockno;不会重新声明 Blockno,但extern int Blockno;会。
我感觉我理解extern Blockno;,但extern int Blockno; 是什么意思?
当我尝试这样做时,我得到一个编译错误,我仍然不明白这本书的意思!
【问题讨论】:
-
@Lundin 我不同意代码中有
extern的说法,因为它不好...... -
@Lundin 根据我目前阅读的内容,可以在头文件中找到。除此之外,链接器如何理解我在不同文件中谈论相同的变量?
-
@Lundin 你的意思是你反对使用全局变量吗?
-
@AnttiHaapala 它可以用于带有全局变量的意大利面条编程目的,在这种情况下它是 100% 坏的。或者它可以用于不必要的显式函数声明,在这种情况下它只是多余的。唯一有效的用例是
extern const(仍然值得怀疑)和跨文件共享嵌入式系统的寄存器映射(好的)。 -
@LiTTle 不要跨文件使用同一个变量。使用 setter/getter 函数。
标签: c scope declaration typedef extern