michalt38:
なぜ次のコードでの#if条件が満たされています:
#include <iostream>
#define VALUE foo
int main() {
#if VALUE == bar
std::cout << "WORKS!" << std::endl;
#endif // VALUE
}
BessieTheCow:
全てのマクロ展開の評価後に定義され、__has_include式(C ++ 17以降)、ブール値リテラルは、番号0(これは字句キーワードである識別子が、好きではない別のトークンとを含んで置換されていない任意の識別子)。
両方そうfoo
とbar
0に置き換えられます。