使用便携式int

时间:2010-01-16 15:35:34

标签: c

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 个答案:

答案 0 :(得分:1)

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

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

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