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