这个问题在这里已有答案:
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 回答
如果您实际上并没有尝试直接映射“从线路”二进制格式,那么您可能根本不需要固定宽度类型 .
举例来说,如果你正在使用
int32_t
只是因为你需要一个整数而不是可以存储-2147483647
到2147483647
范围内的所有值,那么一个简单的long
对于该应用程序来说是完全可移植的 - 它保证至少是那么宽 .人们似乎非常热衷于精确宽度类型 .