C マクロによるパラメータのカスタマイズ
マクロは C プログラミングの基本的な側面であり、コードのカスタマイズと柔軟性を可能にします。一般的な要件の 1 つは、マクロ内でオプションのパラメータを定義できることです。
オプションのパラメータ
文字列を出力するマクロがある次の例を考えてみましょう。
#define PRINT_STRING(message) PrintString(message, 0, 0)
このマクロは、印刷するメッセージという 1 つの必須パラメータを受け入れます。より汎用性を高めるために、文字列サイズとフォント スタイルのオプションのパラメーターを導入できます。
#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, )
使用法
これで、オプションのパラメーターを指定してオーバーロードされた PRINT_STRING マクロを使用できるようになります:
#define PRINT_STRING(...) PRINT_STRING_MACRO_CHOOSER(__VA_ARGS__)(__VA_ARGS__)
たとえば、引数なしでマクロを呼び出してデフォルトを出力できます。 string:
PRINT_STRING("Hello, World!");
または文字列サイズを指定します:
PRINT_STRING("Hello, World!", 18);
または文字列サイズとフォント スタイルの両方:
PRINT_STRING("Hello, World!", 18, bold);
このアプローチにより、次のパラメータの処理が簡素化されます。マクロ呼び出し元、コードの再利用性と汎用性を強化します。
以上がコードをカスタマイズするために C マクロにオプションのパラメーターを実装するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。