2012-06-06 75 views
4

什麼會以下的typedef意味着,以及爲什麼會被要求型長Vs的類型長整型

typedef unsigned long int ULONG; 

如何不同

typedef unsigned long ULONG; 

是海灣合作委員會的sizeof INT = 4的sizeof長= 8,sizeof ULONG = 8。

+0

「對於gcc sizeof int = 4,sizeof long = 8」 - 不在32位系統上。對於這個問題,在Mingw64中也是如此。這些類型的大小或多或少由GCC將用於調用OS庫的ABI決定。 「或多或少」,因爲我敢肯定你可以做一個GCC的構建,其中的類型不符合操作系統,你只是有一些額外的麻煩調用代碼,而不是由你的GCC構建編譯。 –

回答

10

它們是相同的。由於long默認爲int的修飾符,因此可以省略int。這同樣適用於shortshort intunsignedunsigned int

瞭解這裏最根本的區別是,longshortunsigned類型修飾符,而不是類型本身,不像intchardouble等。

3

完全沒有區別。 longlong int同義(正如shortshort int一樣)。

-1

長的大小是沒有關係的GCC,但OS

3

其實,unsigned long沒有在C++標準ISO/IEC 14882規定如此,如果它的工作原理對你而言,這只是因爲你的編譯器將unsigned long int解釋爲unsigned long

+0

歡迎來到堆棧溢出。 ISO/IEC 14882:2011第7.1.6.2節「簡單類型說明符」中的表10將'unsigned long'定義爲有效類型說明符,相當於'unsigned long int'。 (你說得對,§3.9.1「基本類型」沒有列出'unsigned long'。) –