C プリプロセッサを使用したオプションのマクロ
C では、オプションのマクロ パラメーターを使用してコードの柔軟性を高めることができます。これを実装する方法は、オーバーロード形式のマクロを使用することです。この手法がどのように機能するかを見てみましょう。
1 つのアプローチでは、マクロ引数のリストを 2 回利用します。まず、ヘルパー マクロの名前を構築します。次に、引数を適切なヘルパー マクロに渡します。マクロ引数の数を決定するために、標準的な手法が使用されます。
次のコードを考えてみましょう:
enum { plain = 0, bold = 1, italic = 2 }; void PrintString(const char* message, int size, int style) { } #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) #define GET_4TH_ARG(arg1, arg2, arg3, arg4, ...) arg4 #define PRINT_STRING_MACRO_CHOOSER(...) \ GET_4TH_ARG(__VA_ARGS__, PRINT_STRING_3_ARGS, \ PRINT_STRING_2_ARGS, PRINT_STRING_1_ARGS, ) #define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__) int main(int argc, char * const argv[]) { PRINT_STRING("Hello, World!"); PRINT_STRING("Hello, World!", 18); PRINT_STRING("Hello, World!", 18, bold); return 0; }
このアプローチでは、マクロ作成者にとっては複雑になる可能性がありますが、呼び出し側のマクロ呼び出しが簡素化されます。
以上がオプションのマクロパラメータを C で実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。