【问题标题】:-ansi -pedantic 64 bits length integers in C-ansi -pedantic C 中的 64 位长度整数
【发布时间】:2013-04-19 09:04:02
【问题描述】:

我想知道 C 中是否有一个等效于 int64_t 的函数,它可以在 32 位和 64 位平台上运行,即 ansipedantic gcc 模式合规。

我发现这个 post 很有趣,但它与 C++ 相关。

我尝试使用long long,但收到integer overflow in expression [-WOverflow] 错误。此外,ISO C90 不支持long long

我也尝试了post 中的建议,但使用int64_t 时仍然出现-WOverflow 错误

有什么解决办法吗?

【问题讨论】:

    标签: c 64-bit int portability


    【解决方案1】:
    • 在 C89 中(-ansi 标志要求),没有使用 64 位整数的标准方法。您必须依赖实现提供的类型。

    • 在 C99 中,某些实现可能定义 int64_t,因为它是可选类型。至于long long (C99),不保证其宽度正好为64位。

    【讨论】:

    • 我不想使用 C99。我知道long long 来自 C99,这就是为什么我要询问 C89/C90 中可能的等价物
    • @ibi0tux:不,没有标准的方法可以做到这一点。这就是 C99 引入 long long 和固定宽度整数的原因。
    • 你认为我仍然可以根据固定长度最小结构的组合(即char)重新创建最小固定长度整数吗?
    • @ibi0tux:你的意思是像unsigned char n[8]这样的东西吗?除了效率低下之外,它也不是完全标准的,因为CHAR_BIT 可能大于 8。这取决于您想要的可移植性。
    • 好的。我想使我的代码符合 ANSI 会比我更困难。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2010-09-14
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多