【问题标题】:using a portable int [duplicate]使用可移植的 int [重复]
【发布时间】:2011-01-05 21:04:54
【问题描述】:

gcc c99 MS2005/2008

我已经启动了将在 linux/windows 上编译的程序。

程序将在 linux 上使用 gcc 4.4.1 c99 编译。在 Windows 上,编译器将是 MS 2005/2008。这是我无法改变的。

我正在使用 SCons 创建构建文件。但是,我选择 c99 的原因是我可以使用 stdint.h,因此我的整数将在不同架构之间兼容,即 x86_32 和 64 位。使用 int32_t 所以它可以在 32 位和 64 位机器上编译没有任何问题。

但是,我刚刚发现 c99 不用于 ms 编译器。只有c89。但是,c89 没有 stdint.t。

我想知道在 32 或 64 上运行的不同编译器之间使整数可移植的最佳方法是什么。

非常感谢您的建议,

【问题讨论】:

  • 请注意,MSVC 不支持很多 C99 功能。对于 Linux 和 Windows 之间的可移植性,最好使用 C89。

标签: c


【解决方案1】:

如果您实际上并没有尝试“从网络”直接映射二进制格式,那么您可能根本不需要固定宽度的类型。

举例来说,如果您使用int32_t 只是因为您需要一个整数来存储-21474836472147483647 范围内的所有值,那么简单的long 对于该应用程序来说是完全可移植的- 保证至少有那么宽。

人们似乎非常热衷于精确宽度类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多