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

2021-05-24 02:12:49 字數 1596 閱讀 3734

c

程式設計有所幫助。

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編譯器原始碼)

,巧用聯合體

(說明**提取自

lcc編譯器原始碼)

用通用結構體頭實現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

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.在例項乙個物件時,要確認是否有值 在例項化後,也要確定是...