我通常在 C 源文件的开头看到这样的代码
#ifndef _INCLUDE_GUARDS_C
#define _INCLUDE_GUARDS_C
int main()
{
}
int function1()
{
}
#endif
int function2()
{
}
我对这个的目的感到困惑..?
我知道头文件中是否定义了包含保护,但是
源文件中包含这些守卫的目的是什么?
为什么
function2()
定义在包含防护之外?
将包含防护放入 C 或 C++ 非标头源文件中没有任何好处。
我从头开始实现了一个预处理器,并尽可能多地研究了包含守卫,但这完全没有意义。
至于守卫之外的功能,在我看来是草率的。或者,有时当某人有一个魔法咒语时,他们不确定何时应该应用它,所以他们随机地应用它。
老问题,但是...
我认为在测试代码时可以使用它。测试时,您需要访问标头中未定义的本地函数,因此您包含
.c
文件...是的,它很丑陋。是的,您有更好的选择!
对于标头中未定义的函数,不需要包含保护。