首页 文章

使用便携式int [复制]

提问于
浏览
2

这个问题在这里已有答案:

gcc c99 MS2005 / 2008

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

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

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

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

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

非常感谢任何建议,

1 回答

  • 1

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

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

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

相关问题