我有两个文件,第一个文件名为main.cpp
,包含main函数,第二个文件名为class.h
,包含类的声明。
我在同一个文件中包含<iostream>
文件,因为每个文件都需要该文件
文件。
我想从第二个文件中检查文件iostream
是否已包含在第一个文件main.cpp
中,但不再包含它。
我做了什么
// main.cpp
#include <iostream>
#include "class.h"
//class.h
#ifndef iostream_H
#include <iostream>
#endif
该代码是否正确?如何确保它不再包含该文件?
答案 0 :(得分:6)
“我想从第二个文件中检查文件iostream是否已经包含在第一个文件main.cpp中,不再包含它。”您不需要 - 包含您需要的任何文件 - 不要依赖其他文件包含。
<iostream>
有自己的包含警卫,所以即使它被多次包含,也没关系。
如果class.h
和main.cpp
都需要<iostream>
进行编译,则两者都应包含它。
答案 1 :(得分:4)
除了Luchian Grigore said之外。
外部包含警卫(如OP中的那些)违反封装,因为您需要知道头文件的内部细节,即警卫的名称。
此外,这些名称不是标准化的,因此,外部包括防护装置不可携带。
因此,请勿使用外部包含防护装置。将内部包含防护添加到您自己的头文件中,并确保其他所有人(包括标准库)都这样做。