2010-01-16 85 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針對該應用完全可移植 - 這是保證在至少那麼寬。

人們似乎對精確寬度類型非常熱衷。