少なくともtypedefと関数ポインタについて言えば、私は恐ろしい "偶発的プログラマ"病に苦しんでいるかもしれないと思います。だから私は、私が得たすべての出力に基づいて結果を分析するためにこれらを含むあらゆる種類の組み合わせを試してきました。typedefがどのように関数ポインタに作用するか
しかし、私はさまざまな組み合わせを試し続けましたが、結果を分析する代わりに、私は今やプロセスで失われています。
私はあなたがこの混乱を把握するのを手伝ってくれることを願っています。
最初のコード例
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = &do_something;
pr(); // Hello World
2番目のコード例上記のコード例の両方が動作するにはどうすればよい
typedef void (print)(void);
void do_something (void) { printf("Hello World\n"); }
print *pr;
pr = do_something;
pr(); // Hello World
'&' は、関数名には影響しないかのように、それはだ
第3コード例
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 –
うーん...私はあなた自身 'エキスパートCプログラミング'それはexplans Cのvar規則を定義する。私はそれをあなたのためにオンラインで見つけようとします – shengy
ちょうどGoogleのエキスパートCのプログラミング、最初の1つは本です。 「どのように宣言が成立したか」を検索すれば、最初の票が下降詞であることを夢中にしている答えが – shengy