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

irlmq6kh  于 2023-10-16  发布在  其他
关注(0)|答案(2)|浏览(74)

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

#ifndef _INCLUDE_GUARDS_C
#define _INCLUDE_GUARDS_C

int main()
{

}

int function1()
{
}

#endif

int function2()
{
}

我对这件事的目的感到困惑。
我知道如果包含警卫定义在头文件中,但
1.在源文件中包含保护的目的是什么?
1.为什么function2()被定义在包含保护之外?

jrcvhitl

jrcvhitl1#

在C或C++非头文件中放置包含保护没有任何好处。
我从头开始实现了一个预处理器,并尽可能多地研究了包括警卫,这完全没有意义。
至于警卫之外的功能,在我看来是草率的。或者,有时当有人有一个神奇的咒语,他们不知道什么时候应该应用,所以他们随机应用它。

olmpazwi

olmpazwi2#

老问题了但是...
我认为它可以在测试代码时使用。当测试时,你需要访问没有在头文件中定义的本地函数,所以你包含了.c文件。是的,很丑。是的,你有better options
对于没有在头文件中定义的函数,你不需要include guard。

相关问题