我想我可能會患上可怕的「意外程序員」疾病,至少在涉及typedef和函數指針時。所以我一直在試驗各種涉及這些的組合來根據我得到的所有輸出結果來分析結果。typedef如何適用於函數指針
但是,當我不斷嘗試不同的組合,而不是分析結果,我現在只是迷失了過程。
我希望你們能幫我弄清楚這個爛攤子。
第一個代碼示例
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = &do_something;
pr(); // Hello World
第二個代碼示例
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = do_something;
pr(); // Hello World
如何做到既上面的代碼示例正常工作,就好像 '&' 對函數名
沒有影響第三個代碼例如
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print pr;
pr = do_something; // compile error
pr = &do_something; // compile error
pr();
我希望上面的任務之一在這裏工作,但該死的!我真的不明白函數指針(也可能是typedef)。
這可能有助於http://stackoverflow.com/questions/4298654/operator-optional-in-function-pointer-assignment – 2012-02-20 07:25:53
嗯...我認爲你應該讓自己一個'專家C編程'它explists C的變種定義規則。我會盡力爲你找到它 – shengy 2012-02-20 07:27:13
只是谷歌Expert C編程,第一本書是。搜索「如何一個宣言,形成」,我想你會得到答案 – shengy 2012-02-20 07:33:10