2011-05-23 67 views
6

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

回答

12

包括警卫只是防止在一个单独的translation unit(又名编译单元)中包含多个头文件。这并没有解决链接时来自单独翻译单元的多个定义的问题。因此,您只应将声明放入源(.c)文件的标头(.h)文件和定义中。

+0

啊,我现在明白了。谢谢 :)。 – someguy 2011-05-23 21:37:26

1

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