【发布时间】:2014-12-24 06:00:21
【问题描述】:
C++ 标准库头文件可能以未指定的方式相互包含,因此程序员通常不应该依赖一个头文件来包含另一个头文件。但是,在少数情况下,可以保证一个标头包含另一个标头,或者使某些功能可用,否则这些功能需要包含另一个标头。那些是什么情况?
【问题讨论】:
-
为什么这些信息有用?
-
@Pradhan 例如,如果您包含
<vector>,则不必包含<initializer_list>,或者如果您只需要std::begin/@987654325,则不必包含<iterator>。 @. -
@T.C.但是不明确指定声明您使用的类型的头文件是一个坏主意。这将使代码更难阅读,即使它可以使编译更快一点。开发人员不应该知道保证包含的内容。好吧,对于 std::begin 的情况,这是显而易见的,但对于其他情况,它可能不是。
-
请始终包括您使用的内容。即使只需要 30 秒的时间向同事解释你为什么这样做,不这样做也只有缺点。你已经花了更多的时间来解释它而不是做正确的事情。
标签: c++ c++11 c++14 header-files c++20