0
#define MY_PRINT(_format, ...) printf("MIME : %s" _format, __FUNCTION__, __VA_ARGS__);

"\nprint メッセージの最後に "を追加したいと思います。

しかし、

#define MY_PRINT_LN(_format, ...) MY_PRINT(_format "\n", ...)

コンパイルエラーがあります。...定義マクロでパラメータを渡す方法は?

4

1 に答える 1

4

あなたが使用する__VA_ARGS__

#define MY_PRINT_LN(_format, ...) MY_PRINT(_format "\n", __VA_ARGS__)

これは C99 で標準化されました。

ただし、引数がない場合は、最後に冗長なコンマがあります。標準的な解決策はありませんが、GCC (およびおそらく他のコンパイラ) は拡張機能を提供しています。

#define MY_PRINT_LN(_format, ...) MY_PRINT(_format "\n", ## __VA_ARGS__)

extra を使用する##と、引数がない場合、最後のコンマが削除されます。

于 2013-10-20T23:59:14.137 に答える