我知道下面的數據模型存在:Linux的數據模型和原始類型大小
- 32位的* nix:ILP32
- 32位Windows:ILP32
- 32位OS X :ILP32
- 64位* nix中:LP64
- 和64位Windows:LLP64
- 64位OSX:LP64
http://www.unix.org/whitepapers/64bit.html
Linux內核的64位版本使用LP64數據模型(http://www.unix.org/version2/whatsnew/lp64_wp.html)。
UPDATE
C++ 03標準$ 5.3.3/1
的sizeof(char)的,的sizeof(符號字符)和sizeof(無符號字符)爲1;適用於任何其他基本類型(3.9.1)的sizeof的 結果是實現定義的 。 [注:特別的sizeof(布爾)和 的sizeof(wchar_t的)是實現defined.69)
所以真正的問題是: 該編譯器(如GCC)考慮到所選擇的數據模型由操作系統(例如Linux)?
用於編譯OS的編譯器如何? –
Ron,這兩種語言都沒有定義基本類型的大小。這個問題是有效的,我知道這是兩種不同的語言。這裏的關鍵在於操作系統(選擇數據模型)和編譯器之間。 – Kasper
@Ron:不! C和C++標準都沒有定義原始類型的大小! char,float和double的例外。 – Kasper