繁体   English   中英

c ++头文件和include

[英]c++ Header file and include

关于在哪里#include iosteam和vector,我有一个问题? 在main.cpp,header.h或memberfunction.cpp中? 似乎我需要在main.cpp中使用namespace std,但在头文件中使用#include <functional>。 有没有强有力的方法来做到这一点? 谢谢!

简单规则:
仅将头文件包含在需要它的文件中。

如果源文件或头文件不使用头文件中定义/声明的任何构造,则不需要包含该头。 这样做只会给那些翻译单元带来不必要的代码,从而破坏命名空间并可能增加编译时间。

出于可读性原因,您希望仅在使用它们的转换单元中包含标头。 所以在一个不使用std::vector模板的源代码中,你不会#include <vector> ,因此你可以在你自己的#include "myheader.h"之前放入#include "myheader.h"

但是,您可能希望通过预编译标头来减少编译时间。 正如我在这个答案中解释的那样 ,只有当你的所有程序都有一个包含所有包含的单个头时,带有GCC的预编译头才有效。 出于这个原因,你可能想要一个myheader.h ,它本身包括<vector> (即使对于没有使用它的少数编译单元)。

头文件的预编译是编译器(也许是系统)特定的。

如果在header.h以任何方式使用向量或输入/输出流(例如,该类型的参数等),那么最好在那里包含iostream和/或vector 如果只在memberfunction.cpp内部使用它们,请将memberfunction.cpp包含在那里(对其余代码没用)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM