2

我有两个文件,第一个文件被调用main.cpp并且包含主函数,第二个文件被调用class.h并且包含一个类的声明。
在同一个文件中我已经包含了两个<iostream>文件,因为每个文件都需要那个文件文件。

我想要从第二个文件中检查文件iostream是否已经包含在第一个文件main.cpp中,不再包含它。

我做了什么

// main.cpp
#include <iostream>
#include "class.h"

//class.h
#ifndef iostream_H
 #include <iostream>
#endif

那个代码对吗?,我怎样才能确保它不再包含该文件?

4

2 回答 2

6

“我想从第二个文件中检查文件 iostream 是否已包含在第一个文件 main.cpp 中,不再包含它。” 您不需要 - 包含您需要的任何文件 -不要依赖它们被其他文件包含

<iostream>有自己的 include 守卫,所以即使被多次包含也没关系。

如果两者都class.h需要main.cpp编译<iostream>,则两者都应该包含它。

于 2013-07-22T16:26:21.260 回答
4

除了卢奇安·格里高尔所说的话。

外部包含守卫(如 OP 中的守卫)违反封装,因为您需要知道头文件的内部细节,即守卫的名称。

此外,这些名称不是标准化的,因此,外部包含守卫是不可移植的。

因此,不要使用外部包含防护。将内部包含保护添加到您自己的头文件中,并确保其他所有人(包括标准库)都这样做。

于 2013-07-22T16:35:44.900 回答