库包含,同时在 XCode 中用 C++ 编码

Libraries inclusion,while coding in C++ in XCode

在 XCode 中完成我的 class 作业时,我遇到了以下问题: 我创建、编译和运行的程序没有错误,并且在没有包含 cstdlib 和 ctime 等库的情况下也能正常工作,即使它包含 rand 和时间函数。同样,chrono、string 和 cctype 库功能(如 .length() 或 isdigit)在没有包含这些库的情况下似乎也能正常工作。 我的程序唯一无法编译的库是 cmath,因为它包含 fabs 函数。

这怎么可能?是因为 XCode 使用了 Clang 编译器吗?

包括cstdlibctimechronostringcctype只会添加内置声明。有关现有 header 文件的列表,请参阅 http://en.cppreference.com/w/cpp/header。现在,对于所有这些,有一个规则,即它们中的每一个都可以间接地包含任何其他的。

关于你为什么必须包含 cmath 而不是其他人的问题,请重新检查你的代码,我很确定其他人也包括在内。特别是 iostreamfstream 倾向于间接拉入许多其他 header,特别是 stringcctype。但是,它可能不需要任何浮点数学函数,无论是直接的还是间接的,所以它不会引入 cmath.