C の可変パラメーターを含むマクロ
オプションのパラメーターは、デフォルト値を持つパラメーターを指定する便利な方法を提供し、関数呼び出しに柔軟性をもたらします。 C はマクロ内のオプションのパラメーターをネイティブにサポートしていませんが、この動作をシミュレートできる手法があります。
1 つのアプローチには、再帰マクロ パターンの使用が含まれます。例を見てみましょう:
#define PRINT_STRING(message, ...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__) #define PRINT_STRING_1_ARGS(message) PrintString(message, 0, 0) #define PRINT_STRING_2_ARGS(message, size) PrintString(message, size, 0) #define PRINT_STRING_3_ARGS(message, size, style) PrintString(message, size, style)
PRINT_STRING マクロは可変数の引数を受け取ります。マクロ PRINT_STRING_MACRO_CHOOSER は引数のリストを 2 回使用します。1 回目は引数の数に基づいて正しいヘルパー マクロ (PRINT_STRING_1_ARGS、PRINT_STRING_2_ARGS、または PRINT_STRING_3_ARGS) を決定し、もう 1 回目は選択したヘルパー マクロに引数を渡します。
使用方法は次のとおりです。
PRINT_STRING("Hello, World!"); // Defaults to no size or style PRINT_STRING("Hello, World!", 18); // Specifies only size PRINT_STRING("Hello, World!", 18, bold); // Specifies both size and style
このアプローチではマクロにオプションのパラメーターが提供され、呼び出し元は必要なパラメーターのみを指定できます。ただし、複数のヘルパー マクロを定義する必要があり、オプションのパラメーターが多数になると冗長になる可能性があります。
以上がC マクロでオプションのパラメータをシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。