發表文章

目前顯示的是 5月, 2010的文章

struct 初始化筆記

 最近在看kernel的code, 裡面常有個好用的struct初始化方式, 可以只設定自己需要的值,相當彈性。 範例如下:建立一個 struct std,在main中初始化,再利用指標函數呼叫showme,把值印出來。 (這簡單例子不考慮buffer overflow問題) struct std{ int number; char name[128]; int (*get)(struct std *p); }; void showme(struct std *p) { printf("My number is:%d name:%s \n",p->number,p->name); } int main() { struct std mystd={ .number = 39, .name = "LuLu", .get = &showme, }; //* equals struct std mystd={39,"lulu",&showme}; (*mystd.get)(&mystd); //*call showme function with mystd parameter } 執行結果: My number is:39 name:LuLu

Blog重新開張

最近又開始想寫些東西,這個blog會記錄我的遊記、一些關於嵌入系統的文章、自行車運動、 就這樣...

指標函數教學

這文章中是指標涵數的筆記,搭配上struct array是個很漂亮,又實用的方法。 指標函數用法: 回傳值型態 (*指標)(參數1,參數2) typedef void (*CMD_handler)(char *path); /*宣告point function*/ /*宣告一個arracy struct*/ typedef struct { char *CmdName; CMD_handler Cmdfunc; }CMD; /*建立CmdTable,一個CmdName對應一個function Name */ CMD CmdTable[]{ {"cfg",cmdcfg}, {"update",cmdupdate) }; for (尋訪每個element) /*blog顯示有問題所以只好用文字說明*/ if(strcmp(Cmd,CmdTable[i].Cmdname)!=0) (*(CmdTable[i].Cmdfunc)(query);