2

1つまたは0のパラメーターを持つことができるマクロを定義する方法はありますか?

この例のように使用するものが必要です。

#define MY_RETURN(ret) return ret;

void foo(){
    MY_RETURN();
}

int foo_integer(){
    MY_RETURN(1);
}

私はこれに対する解決策を見つけることができません。

4

3 に答える 3

2

C99以降では、可変個引数マクロを使用できます。

C11(n1570)、§6.10前処理ディレクティブ

# define identifier lparen identifier-list , ... ) replacement-list new-line

マクロは次のようになります。

#define MY_RETURN(...) return __VA_ARGS__

引数を数える必要がある場合は、たとえばここで確認できます。

于 2013-03-06T14:40:32.307 に答える
0

2つのMY_RETURNマクロを定義します。1つはパラメーターあり、もう1つはパラメーターなしです。一種のオーバーロードですが、マクロ用です。

于 2013-03-06T14:37:10.173 に答える
-1

入力パラメータをサポートせず、同時に入力パラメータもサポートするマクロ関数の定義方法の回答に基づく

次のようなことを考えてみてください。

#define MY_RETURN(ret) { \
  int args[] = {ret}; \
  if(sizeof(args) > 0) \
    return ret; \
}
于 2013-03-06T14:35:55.293 に答える