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