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

C++ C++;-如何避免此标题出现两次?,c++,header,include-guards,C++,Header,Include Guards,地址: 在标题保护下,有以下代码段: add.h: #include "mymath.h" int add(int x, int y); 减去.h: #include "mymath.h" int subtract(int x, int y); main.cpp: #include "add.h" #include "subtract.h" 如何避免在main.cpp中包含两次“mymath.h” 谢谢。您应该在任何标题中放置标题防护装置,也可以在mymath.h中。如果您使用MS VC+

地址:

在标题保护下,有以下代码段:

add.h:

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

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

#include "add.h"
#include "subtract.h"
如何避免在
main.cpp
中包含两次“mymath.h”


谢谢。

您应该在任何标题中放置标题防护装置,也可以在mymath.h中。

如果您使用MS VC++或标准方式,请使用#pragma一次

在我的数学里面

#ifndef MYMATH_H
#define MYMATH_H

[code here]

#endif // MYMATH_H

这个例子下面的几行解释了这一点。您的
mymath.h
文件应如下所示:

#ifndef MYMATH_H
#define MYMATH_H

// your declarations here

#endif

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

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

为什么要避免它被包含两次?包含保护的目的不是阻止预处理器多次看到相同的
#include
,而是阻止mymath.h中的实际代码被包含两次。假设您在mymath.h中包含了警卫,您就没事了。答案实际上在该教程的下一段中。你为什么在这里问这个问题?