2010-01-16 122 views
2

gcc c99 MS2005/2008使用便携式int

我已经启动了将在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

非常感谢您的任何意见运行不同的编译器之间的整数便携的最佳方式,

+1

请注意,MSVC不支持很多C99功能。为了Linux和Windows之间的可移植性,最好使用C89。 – 2010-01-16 15:39:22

回答

1

如果你没有真正尝试直接映射一个“从电线”的二进制格式,那么你可能根本不需要固定宽度的类型。

举例来说,如果你使用int32_t只因为你需要一个整数比可以存储在-21474836472147483647范围内的所有值,然后进行简单long针对该应用完全可移植 - 这是保证在至少那么宽。

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