【问题标题】:ceil works without including <cmath> in visual c++ 2010ceil 可以在 Visual c++ 2010 中不包含 <cmath> 的情况下工作
【发布时间】:2011-11-27 19:21:34
【问题描述】:

我刚刚在 Visual Studio 2010 中编写了一个简单的 C++ 程序,并使用了ceil 函数。但我忘了包括&lt;cmath&gt;,只包括&lt;iostream&gt;。令人惊讶的是,我的代码编译成功并且运行没有任何错误。我读过一本 C++ 书,它清楚地表明要使用 ceil 函数,您必须包含 &lt;cmath&gt;&lt;math.h&gt;。为什么会发生这种情况?谁能解释我?谢谢!

【问题讨论】:

  • iostream 包括 istream 包括 ostream 包括 ios 包括 xlocnum 包括 cmath 包括 math.h。 num_get::do_get() 使用 ldexp()。

标签: c++ visual-studio-2010 visual-c++-2010


【解决方案1】:

标头是从其他(间接)包含的标头中间接包含的。

要找出是哪一个,请从项目选项中启用“保留预处理源”(/P) 并检查生成的 (*.i) 文件

更新刚刚发现VS2010重命名了相关选项:

【讨论】:

    【解决方案2】:

    从技术上讲,允许实现在系统标头中自动包含任何标头。但这是实现定义的。

    在某些情况下,&lt;cmath&gt; 已包含在内,在其他情况下,则不包含 - 这同样适用于所有其他标准标头。

    这个问题就出现在这个问题上:https://stackoverflow.com/questions/7632926/is-this-a-c-program-or-c-program-how-to-decide

    除此之外,它可能会被其他包含间接包含。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      相关资源
      最近更新 更多