2

渡したい共通の引数を共有するいくつかの関数があるので、マクロを使用して、共通の引数を繰り返し書き出さないようにすることはできますか?

例として、次のように動作しますか?

#define STD_ARGS arg1, int arg2, int arg3

foo(int STD_ARGS, int foo_arg1, int foo_arg2);
foo(int STD_ARGS, int foo_arg1, int foo_arg2) {
    ...
}
4

2 に答える 2

2

もちろん、それは合法です。-d マクロの展開は#defineトークンの置き換えに他ならず、それらのトークンが何を意味するか (もしあれば) を無視します。

(これが良いアイデアかどうかは、それがどれだけうまく文書化されているか、使用法がどこまで広がっているかなどに依存します。)

于 2013-01-20T02:17:40.467 に答える
1

はい、動作します。STD_ARGSマクロの働きは、をに置き換えるだけarg1, int arg2, int arg3です。コンパイル前。したがって、それは合法です。

于 2013-01-20T02:21:24.887 に答える