次のマクロ定義はどのように解決されますか?
#define EMAIL_SERVER_ADAPTER_FATAL_ERROR MSB_RETURN_TYPE_FATAL_ERROR | 1
つまり、1 または MSB_RETURN_TYPE_FATAL_ERROR に解決されますか?
次のマクロ定義はどのように解決されますか?
#define EMAIL_SERVER_ADAPTER_FATAL_ERROR MSB_RETURN_TYPE_FATAL_ERROR | 1
つまり、1 または MSB_RETURN_TYPE_FATAL_ERROR に解決されますか?
|
マクロでは特別な意味はありません。マクロは次のように解決されます
MSB_RETURN_TYPE_FATAL_ERROR | 1
これは、2 つの値 (MSB_RETURN_TYPE_FATAL_ERROR と 1) のビットごとの OR です。
マクロ内の|
は、C および C++ の他の場所と同じ意味を持ちます。ビットごとの or を意味します。
推定 MSB_RETURN_TYPE_FATAL_ERROR
可能値は何らかの数値です(そうでなければ、ほとんどコンパイルされません)。
引数のために、0x100 にします。
したがって、次のコード:
return EMAIL_SERVER_ADAPTER_FATAL_ERROR;
次のように展開されます。
return MSB_RETURN_TYPE_FATAL_ERROR | 1;
これは次のようになります。
return 0x100 | 1;
これは次と同じです。
return 0x101;
もちろん、MSB_RETURN_TYPE_FATAL_ERROR はおそらく 0x100 以外のものですが、原則は適用されます。
マクロは単なるテキスト置換なので、
EMAIL_SERVER_ADAPTER_FATAL_ERROR
代わりになります
MSB_RETURN_TYPE_FATAL_ERROR | 1
その後は単なる数値です (つまり、単純なビット単位の OR 演算)。