#defineマクロが次のように作成された記事を読んでいました:
#define TEST(level) if (level > 2) ; else std::cout
これは、次のようなコードで使用できます。
Test(1) << 3;
Test(3) << 4;
あなたが書いたら
TEST(1)
それは次のように置き換えられます:
std::cout
と
TEST(3)
(コードファイル内の)空の文字列に置き換えられます。ただし、このように機能した場合は、エラーがスローされるはずです。
<< 3;
無効です。
このマクロは実際にどのように機能しますか?プリプロセッサはどのように変化しますか
TEST(3) << 3;
何も出力しないようにします(つまり、コードは実行されません)