天天看點

GUN C關鍵字typeof

from http://blog.csdn.net/ganggexiongqi/article/details/6764999

typeof關鍵字是C語言中的一個新擴充。隻要可以接受typedef名稱,Sun Studio C 編譯器就可以接受帶有typeof的結構,包括以下文法類别:

聲明

函數聲明符中的參數類型連結清單和傳回類型

類型定義

類型操作符s

sizeof操作符

複合文字

typeof實參

編譯器接受帶雙下劃線的關鍵字:__typeof和__typeof__。本文中的例子并沒有遵循使用雙下劃線的慣例。從語句構成上看,typeof關鍵字後帶圓括号,其中包含類型或表達式的名稱。這類似于sizeof關鍵字接受的操作數(與sizeof不同的是,位字段允許作為typeof實參,并被解釋為相應的整數類型)。從語義上看,typeof 關鍵字将用做類型名(typedef名稱)并指定類型。

下面是兩個等效聲明,用于聲明int類型的變量a。

以下示例用于聲明指針和數組。為了進行對比,還給出了不帶typeof的等效聲明。

如果将typeof用于表達式,則該表達式不會執行。隻會得到該表達式的類型。以下示例聲明了int類型的var變量,因為表達式foo()是int類型的。由于表達式不會被執行,是以不會調用foo函數。

請注意,typeof構造中的類型名不能包含存儲類說明符,如extern或static。不過允許包含類型限定符,如const或volatile。例如,下列代碼是無效的,因為它在typeof構造中聲明了extern:

下列代碼使用外部連結來聲明辨別符b是有效的,表示一個int類型的對象。下一個聲明也是有效的,它聲明了一個使用const限定符的char類型指針,表示指針p不能被修改。

typeof構造的主要應用是用在宏定義中。可以使用typeof關鍵字來引用宏參數的類型。

from http://blog.sina.com.cn/s/blog_a2c2b1810100yvlj.html

繼續閱讀