当我在c ++代码中包含<limits>或<limits.h>时,它会有什么不同

时间:2016-04-25 03:14:13

标签: c++ header-files

有人可以解释一下吗?

    #include <iostream>
    #include <limits.h>

    #include <iostream>
    #include <limits>

2 个答案:

答案 0 :(得分:5)

<limits>是一个C ++标准库头文件,提供了与C头<limits.h>类似的见解(在C ++中也可以作为<climits>使用),但它的编写方式更多在C ++程序中有用且安全:

  • 说你有一个template <typename Numeric> ...,里面的代码想要知道用户实例化你的模板的Numeric类型参数的最小值和最大值:你可以使用{{ 1}}和std::numeric_limits<Numeric>::min();如果您想从...::max()访问相同的值,则很难知道<climits>SCHAR_MINSHRT_MININT_MIN等等使用,你必须自己在他们之间切换 - 许多额外的代码,如此微不足道的

  • LONG_MIN有很多宏,并且宏不像“普通”C ++标识符那样尊重命名空间或范围 - 它们的替换是相当不明确的 - 因此它们会使您的程序更容易出错< / p>

  • <climits>提供了更多关于数字类型的见解,例如它们是否已签名,它们可以处理的基数为10的数字,它们是否代表无穷大或不是数字哨兵值等(有关更完整的列表和信息,请参阅header docs

答案 1 :(得分:2)

limits.h是C标准库头。 limits是C ++标准库头。它们包含different个东西。

C ++中有climits,它提供more or less what limits.h did