1つまたは0のパラメーターを持つことができるマクロを定義する方法はありますか?
この例のように使用するものが必要です。
#define MY_RETURN(ret) return ret;
void foo(){
MY_RETURN();
}
int foo_integer(){
MY_RETURN(1);
}
私はこれに対する解決策を見つけることができません。
1つまたは0のパラメーターを持つことができるマクロを定義する方法はありますか?
この例のように使用するものが必要です。
#define MY_RETURN(ret) return ret;
void foo(){
MY_RETURN();
}
int foo_integer(){
MY_RETURN(1);
}
私はこれに対する解決策を見つけることができません。
C99以降では、可変個引数マクロを使用できます。
C11(n1570)、§6.10前処理ディレクティブ
# define identifier lparen identifier-list , ... ) replacement-list new-line
マクロは次のようになります。
#define MY_RETURN(...) return __VA_ARGS__
引数を数える必要がある場合は、たとえばここで確認できます。
2つのMY_RETURNマクロを定義します。1つはパラメーターあり、もう1つはパラメーターなしです。一種のオーバーロードですが、マクロ用です。
入力パラメータをサポートせず、同時に入力パラメータもサポートするマクロ関数の定義方法の回答に基づく
次のようなことを考えてみてください。
#define MY_RETURN(ret) { \
int args[] = {ret}; \
if(sizeof(args) > 0) \
return ret; \
}