在 .c 文件中包含守卫的目的是什么?

问题描述 投票:0回答:2

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

#ifndef _INCLUDE_GUARDS_C
#define _INCLUDE_GUARDS_C

int main()
{

}

int function1()
{
}

#endif

int function2()
{
}

我对这个的目的感到困惑..?

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

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

  2. 为什么

    function2()
    定义在包含防护之外?

c header-files c-preprocessor include-guards
2个回答
6
投票

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

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

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


0
投票

老问题,但是...

我认为在测试代码时可以使用它。测试时,您需要访问标头中未定义的本地函数,因此您包含

.c
文件...是的,它很丑陋。是的,您有更好的选择

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

© www.soinside.com 2019 - 2024. All rights reserved.