【发布时间】:2017-05-04 00:10:19
【问题描述】:
这是this 的后续问题
在 C++ 中,与 C 不同,标准头文件允许#include 其他标准头文件。
有什么方法可以知道自动包含了哪些标头,因为可能很难猜测哪些标头中定义了哪些符号。
动机:我的作业在我的计算机上编译并正常工作,但 TA 告诉我它没有编译,需要几个头文件(互斥体和算法)来编译。我如何确定我将来提交的代码是防弹的。
我的编译器没有给出任何关于隐式声明的警告。
我正在使用clang++ -std=c++11 来编译我的代码。
【问题讨论】:
-
打开你包含的头文件?为什么它仍然很重要?
-
永远不要依赖这种隐含的头文件,这是一个实现细节,可以随时更改。始终明确包含您需要的功能。
-
@pfannkuchen_gesicht 我提交了一个在我的电脑上完美运行的作业,但是助教在编译它时遇到了问题。所以我想知道有没有办法知道自动包含哪些标头,以便我可以对我的代码进行防弹。
-
@Anarug:啊,将动机放在问题中会改善你的问题——或者甚至将问题改写成你真正想知道的:如何确保你拥有所有@ 987654323@s 你需要是可移植的,而不是隐式包含一些标题。
-
@Raphael:“我需要为这件事包含什么”的问题与“我已经编写了数千行代码;我如何检查我是否明确包含一切都需要吗?”