ホームページ > バックエンド開発 > C++ > C マクロでオプションのパラメータをシミュレートするにはどうすればよいですか?

C マクロでオプションのパラメータをシミュレートするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-17 04:46:03
オリジナル
342 人が閲覧しました

How Can I Simulate Optional Parameters in C   Macros?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート