为什么一些 LLVM 标准库头文件包含其他头文件而 GCC 不

Why do some LLVM standard library headers include other headers but GCC does not

在跨 GCC 和 Clang 编译项目时,我注意到像 fabs 这样的函数在 GCC 上引起了编译问题,因为我自己从未包含 <cmath>。我在 Clang 上开发,所以我从来没有注意到这一点,因为我使用的是 llvm <cstdlib> 头文件 includes <cmath> itself,似乎没有对它做任何事情,而 GCC 版本没有。

这有什么原因吗?除了尝试之外,我还能做些什么来确保我的代码能够跨多个标准库编译?

对于您使用的每个函数,请查阅 C++ 参考以找出您应该包含的 header。

The reference for fabs 说你必须包括 <cmath>.