从Where to put include statements, header or source?进一步提出问题:
如果我在标题中已经有一个include语句,例如#include,我还需要把它放在源文件中吗?我可以在两个文件中使用#include进行编译,当我从源文件中删除#include时就可以了。
那么哪个更合适,还是真的不重要?
答案 0 :(得分:2)
如果您的第一个包含文件依赖于第二个 - 例如,第一个包含文件引用类或第二个类型的typedef - 将第二个包含文件放在第一个包含文件中。如果他们是独立的。包括来自源文件。
为避免文件被包含两次时出现问题,人们经常提出
#ifndef INCLUDE_FILE_NAME_INCLUDED
#define INCLUDE_FILE_NAME_INCLUDED
.......
#endif
在包含文件的开头/结尾,所以即使你包含两次,也会在第二次定义INCLUDE_FILE_NAME_INCLUDED并且文件不会被评估两次。
答案 1 :(得分:1)
简短的回答:只把它放在你必须的地方。
如果您可以在没有#include
指令的情况下进行编译,请执行此操作
否则,如果您只能在源文件中使用它进行编译,请执行此操作
否则,您必须将其放在标题中,但也不要将其放在源文件中。
更喜欢将它放在源文件而不是标题中的原因是为了不在#include标题的其他文件中创建不必要的依赖。
答案 2 :(得分:0)
#include
级联。因此,如果您#include <iostream>
中file.h
,#include "file.h"
中file.cpp
iostream
,则file.cpp
中会#include <iostream>
...
。
#include "file.h"
// iostream definitions are available.
#include
但是请记住linked question的教训:当标题本身需要导入的定义时,头文件中只有{{1}}。