C ++ - 如何避免此标题出现两次?

时间:2011-01-22 17:21:30

标签: c++ header include-guards

在:http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/

在Header guards下,有一些代码段:

add.h:

#include "mymath.h"
int add(int x, int y);

subtract.h:

#include "mymath.h"
int subtract(int x, int y);

main.cpp中:

#include "add.h"
#include "subtract.h"

如何避免#include "mymath.h"main.cpp中出现两次?

感谢。

4 个答案:

答案 0 :(得分:5)

该示例正下方的行解释了它。您的mymath.h文件应如下所示:

#ifndef MYMATH_H
#define MYMATH_H

// your declarations here

#endif

每个头文件都应遵循此基本格式。这允许任何需要它的文件(头文件和源文件)都包含头文件,但实际的声明只会在每个源文件中包含一次

答案 1 :(得分:4)

如果您使用MS VC ++或标准方式

,请使用#pragma一次

在mymath.h中

#ifndef MYMATH_H
#define MYMATH_H

[code here]

#endif // MYMATH_H

答案 2 :(得分:2)

如果所有标题文件都有标题保护,则可以包括两次。第二个和所有后续包含只会添加空行,并且不会有任何代码重复。只需确保mymath.h也有标题保护。

答案 3 :(得分:1)

您应该将标题保护放在任何标题中,也可以放在mymath.h中。