例解GNU C之typeof 一)

2021-06-14 20:48:16 字數 1091 閱讀 8360

前言:計算機語言是編譯器和程式設計師交流的依據和規範,gnu c是gcc特有的功能,在linux核心中被廣泛應用。

幫助文件:

關鍵字typeof用於獲取表示式的資料型別。

簡單例子,如清單1: 

[cpp]view plain

copy

char *chptr01;  

typeof (*chptr01) ch; //等價於char ch;

typeof (ch) *chptr02; //等價於char *chptr02; 

typeof (chptr01) chparray[5]; //等價於char *chparray[5];

例子中chptr01的資料型別為char *,*chptr01的資料型別為char。

複雜的例子,如清單2: 

[cpp]view plain

copy

#include 

#define array(type, size) typeof(type [size])

int func(int num)  

int main(void)    

例子輸出結果: 

[cpp]view plain

copy

pfunc(10) = 15  

hello world!  

如果typeof的運算元是乙個資料型別,那麼它的結果就是這個資料型別,如第16行。

在linux核心中的應用,如清單3: 

[cpp]view plain

copy

/* linux-2.6.38.8/include/linux/kernel.h */

#define min(x, y) ()  

#define max(x, y) ()  

通過typeof獲得x和y的資料型別,然後定義兩個臨時變數,並把x和y的值分別賦給這兩個臨時變數,最後進行比較。

另外,巨集定義中(void)(&_min1 == &_min2)語句的作用是用來警告x和y不能屬於不同的資料型別。

例解GNU C之匿名聯合或結構體

分類 漫談c語言 2011 12 04 12 43 488人閱讀收藏 舉報cstruct linux核心 initialization gcc編譯器 前言 計算機語言是編譯器和程式設計師交流的依據和規範,gnu c是gcc特有的功能,在linux核心中被廣泛應用。幫助文件 在gnu c中,可以在結構...

例解const之一

1.const類例項不能呼叫非const的成員函式,編譯器出錯。include include using namespace std class student int get id private int m id string m name int main root cnc bj 010 2...

網路故障排除精解十例(一

例項一 網路測試裝置法 大連某電力使用者,有乙個站點上網速度很慢,並且時不時地中斷,已經更換過網絡卡,檢查過 pc的設定等,都無法確定問題在 此外將網線換至交換機不同的埠,問題還是得不到解決。而連線在該交換機上的其它使用者都沒有問題。使用者購買網路萬用表後,將 nt il 接入測試幾分鐘後,測試儀顯...