C老鳥程式設計技巧總結 1

2021-08-25 15:30:13 字數 1284 閱讀 9125

1 , 開發跨平台的一種結構體實現 (說明**提取自 lcc 編譯器原始碼)

// 定義跨平台的結構體 .

typedef struct binding binding;

// 可以先把每個平台的介面物件繫結好 .

binding binds;

// 下面使用起來就很方便了 , 無論是從命令列取平台名子動態繫結還是用巨集來在編譯時繫結 .

如 ( 動態繫結 ):for (j = 0; bindings[j].name && bindings[j].ir; j++)

// 根據 -target 引數的值來確定平台

if (strcmp(&argv[i][8], bindings[j].name) == 0)

2 ,巧用巨集來減少**量,使**更美觀 (說明**提取自 lcc 編譯器原始碼)

3 ,巧用聯合體 (說明**提取自 lcc 編譯器原始碼)

4 , 用通用結構體頭實現 c 的 oo 封裝 (說明**提取自 ruby 原始碼)

struct rbasic 的設計是為了包含由所有物件結構體共享的一些重要資訊的。struct rbasic 的定義如下:

struct rbasic

struct rbasic ;

flags 是個多目的的標記,大多用以記錄結構體型別 ( 比如, struct robject) 。型別標記命名為 t_***x ,可以使用巨集 type() 從 value 中獲得。這是乙個例子:

value str;

str = rb_str_new(); /* 建立 ruby 字串(其結構體是 rstring ) */

type(str); /* 返回值是 t_string */

這些 t_***x 標記的名字直接與其對應的型別名相關,如 t_string 表示 struct rstring 、 t_array 表示 struct rarray 。

struct rbasic 的另乙個成員, klass ,包含了這個物件歸屬的類。因為 klass 成員是 value 型別 , 它儲存的是(乙個指標指向)乙個 ruby 物件。簡言之,它是乙個類物件。

函式指標表和變數表實現成員函式和成員變數的封裝:

struct rclass ;

struct st_table是乙個在ruby中到處使用的 hash 表,但基本上,它就是乙個將名字對映為物件的表。在m_tbl中,持有這個類所擁有方法的名稱(id)與方法實體本身之間的對應關係。

C老鳥程式設計技巧總結 1

c 程式設計有所幫助。1,開發跨平台的一種結構體實現 說明 提取自 lcc編譯器原始碼 定義跨平台的結構體.typedef struct binding binding 可以先把每個平台的介面物件繫結好.binding binds 下面使用起來就很方便了 無論是從命令列取平台名子動態繫結還是用巨集來...

C老鳥程式設計技巧總結 2

5 複雜指標的宣告 規則總結 1 去掉變數名就型別 去掉乙個 就是指向記憶體單元的型別 2 強調什麼將名子和強調的東東括最裡層 再將其次強調的東西括外面一層 最後強調的括最外層 型別最後加在外面 如 int i 2 指向 int 2 的指標 強調指標 int i 2 型別為 int 的陣列 強調陣列...

C 技巧總結 1

1.usecontrol頁面在使用的時候,是沒有showdialog功能的。2.列表在潘頓是否為空的時候可以直接判斷列表元素的數量是否為零。3.foreach迴圈遍歷的時候,要模擬這個迴圈完整的執行過程,在不容易出錯,否則容易出現邏輯錯誤。4.在例項乙個物件時,要確認是否有值 在例項化後,也要確定是...