C マクロによるオプションのオーバーロードされたパラメーター
概要
C マクロは便利なメソッドを提供しますコードの再利用とパラメータ化のため。ただし、デフォルトでは、マクロはオプションのパラメータまたはオーバーロードされたパラメータを処理できません。この記事では、この制限を克服する手法について説明します。
解決策
次のマクロベースのアプローチにより、オプションのオーバーロードされたパラメーターが可能になります。
#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__)
使用法
このマクロベースのソリューションは、主に 2 つの機能を提供します。利点:
PRINT_STRING マクロは次のように使用できます。
PRINT_STRING("Hello, World!"); // No size or style specified PRINT_STRING("Hello, World!", 18); // Size specified PRINT_STRING("Hello, World!", 18, bold); // Size and style specified
実装の詳細
このソリューションでは、いくつかの手法が使用されます。
以上がC マクロを使用してオプションのオーバーロードされたパラメーターを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。