我经常在C中的源文件的开头看到这样的代码
#ifndef _INCLUDE_GUARDS_C #define _INCLUDE_GUARDS_C int main() { } int function1() { } #endif int function2() { }
我对这件事的目的感到困惑。我知道如果包含警卫定义在头文件中,但1.在源文件中包含保护的目的是什么?1.为什么function2()被定义在包含保护之外?
function2()
jrcvhitl1#
在C或C++非头文件中放置包含保护没有任何好处。我从头开始实现了一个预处理器,并尽可能多地研究了包括警卫,这完全没有意义。至于警卫之外的功能,在我看来是草率的。或者,有时当有人有一个神奇的咒语,他们不知道什么时候应该应用,所以他们随机应用它。
olmpazwi2#
老问题了但是...我认为它可以在测试代码时使用。当测试时,你需要访问没有在头文件中定义的本地函数,所以你包含了.c文件。是的,很丑。是的,你有better options!对于没有在头文件中定义的函数,你不需要include guard。
.c
2条答案
按热度按时间jrcvhitl1#
在C或C++非头文件中放置包含保护没有任何好处。
我从头开始实现了一个预处理器,并尽可能多地研究了包括警卫,这完全没有意义。
至于警卫之外的功能,在我看来是草率的。或者,有时当有人有一个神奇的咒语,他们不知道什么时候应该应用,所以他们随机应用它。
olmpazwi2#
老问题了但是...
我认为它可以在测试代码时使用。当测试时,你需要访问没有在头文件中定义的本地函数,所以你包含了
.c
文件。是的,很丑。是的,你有better options!对于没有在头文件中定义的函数,你不需要include guard。