外部变量 - 为什么?

时间:2011-05-23 21:27:29

标签: c extern

我听说你不应该在头文件中定义任何东西,因为有多个定义的可能性,但如果你有包含守卫,这不应该发生,对吧?还有哪些其他原因可以将extern添加到变量中?

2 个答案:

答案 0 :(得分:12)

包含防护仅仅防止在单个translation unit(又名编译单元)中多次包含标头。这并未解决链接时单独翻译单元的多个定义问题。因此,您应该只将声明放在标题(.h)文件中,将定义放在源(.c)文件中。

答案 1 :(得分:1)

当在一个源文件(更具体地,一个翻译单元)中定义变量并在另一个源文件中引用变量时,通常在头文件中声明extern个变量。