我刚刚在Visual Studio 2010中编写了一个简单的C ++程序,并使用了ceil
函数。但我忘记添加<cmath>
,但仅包含<iostream>
。令人惊讶的是我的代码编译成功并运行没有任何错误。我阅读了一本C ++书籍,它明确表示要使用ceil
函数,您必须包含<cmath>
或<math.h>
。为什么会这样?有人能解释一下吗?谢谢!
答案 0 :(得分:1)
标题间接包含在其他(间接)包含的标题中。
要找出哪一个,请启用&#39;保留预处理的来源&#39; (/P
)从项目选项中检查生成的(* .i)文件
更新刚刚发现VS2010已重命名相关选项:
答案 1 :(得分:1)
从技术上讲,允许实现自动包含系统头中的任何头。但这是实现定义。
在某些情况下,<cmath>
已经包含在内,在其他情况下,它不是 - 同样适用于所有其他标准标题。
此问题出现在这个问题上:https://stackoverflow.com/questions/7632926/is-this-a-c-program-or-c-program-how-to-decide
除此之外,它可能被其他包括间接包括在内。