我听说你不应该在头文件中定义任何东西,因为有多个定义的可能性,但如果你有包含守卫,这不应该发生,对吧?还有哪些其他原因可以将extern添加到变量中?
答案 0 :(得分:12)
包含防护仅仅防止在单个translation unit(又名编译单元)中多次包含标头。这并未解决链接时单独翻译单元的多个定义问题。因此,您应该只将声明放在标题(.h)文件中,将定义放在源(.c)文件中。
答案 1 :(得分:1)
当在一个源文件(更具体地,一个翻译单元)中定义变量并在另一个源文件中引用变量时,通常在头文件中声明extern
个变量。