既存のコードでは、特定の失敗ケースにはいくつかの「理由」があります。これらの「理由」は、次のように#定義されています。
#define STRING_NOT_FOUND (1 << 0)
#define STRING_INVALID (1 << 1)
#define STRING_TOO_LARGE (1 << 2)
...etc
これらは関数を使用して設定されますsetFailureReason(int reason);
以下に示すように、数値を使用する場合と比較して、これらの定数を定義するときにシフト演算子を使用する利点は何ですか。
#define STRING_NOT_FOUND 1
#define STRING_INVALID 2
#define STRING_TOO_LARGE 4