在.c文件中包含警卫的目的

时间:2013-11-21 11:29:37

标签: c header-files c-preprocessor include-guards

我一直在C

的源文件的开头看到这样的代码
#ifndef _INCLUDE_GUARDS_C
#define _INCLUDE_GUARDS_C

main()
{

}

function1()
{
}

#endif

function2()
{
}

我对此的目的感到困惑。?

我知道包含警卫是否在头文件中定义,但是

  1. 这些内容的目的是什么,包括源文件中的警卫?以及

  2. 为什么在包含警卫之外定义function2()?

2 个答案:

答案 0 :(得分:6)

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

我已经从头开始实施了一个预处理器,并且研究了一个人可以保护的内容,这完全没有意义。

至于守卫外面的功能,对我来说看起来很邋..或者,有时当某人有魔法咒语时,他们不确定何时适用,所以他们随机应用。

答案 1 :(得分:0)

老问题,但是......

我认为在测试代码时可以使用它。在测试时,您需要访问未在标题中定义的本地函数,因此您包含<div class="col-md-3 form-group"> <label>Ville de chargement</label> <input type="text" class="form-control collectes-ville text-center" name="villeChargement" placeholder="Chargement"> <label>Ville de livraison</label> <input type="text" class="form-control collectes-ville text-center" name="villeLivraison" placeholder="Livraison" value=""> </div> <div class="col-md-3 form-group"> <label>Chargement mini</label> <input type="text" id="datepicker" class="form-control collectes-date-chargement-min text-center" name="DebutChargement" placeholder="Date début chargement" value=""> <label> <-> </label> <input type="text" id="datepicker2" class="form-control collectes-date-chargement-min text-center" name="FinChargement" placeholder="Date fin chargement" value=""> </div> </div>文件...是的,它很难看。是的,你有better options

对于未在标题中定义的功能,您不需要包含警示。