2

我经常在 C 源文件的开头看到这样的代码

#ifndef _INCLUDE_GUARDS_C
#define _INCLUDE_GUARDS_C

main()
{

}

function1()
{
}

#endif

function2()
{
}

我对此的目的感到困惑..?

我知道头文件中是否定义了包含保护,但是

  1. 这些在源文件中包含警卫的目的是什么?和

  2. 为什么 function2() 在包含守卫之外定义?

4

2 回答 2

6

将包含保护放在 C 或 C++ 非头源文件中没有任何好处。

我已经从头开始实现了一个预处理器,并尽可能多地研究了包含警卫,这是完全没有意义的。

至于守卫之外的功能,我觉得很草率。或者,有时当某人有一个魔法咒语时,他们不确定它应该何时应用,所以他们随机应用它。

于 2013-11-21T11:33:35.633 回答
0

老问题,但是...

我认为它可以在测试代码时使用。测试时,您需要访问未在标头中定义的本地函数,因此您包含.c文件......是的,它很难看。是的,你有更好的选择

对于标题中未定义的函数,您不需要包含保护。

于 2016-12-09T16:13:00.477 回答