もしディレクティブマクロの比較

michalt38:

なぜ次のコードでの#if条件が満たされています:

#include <iostream>
#define VALUE foo    

int main() {    
#if VALUE == bar
    std::cout << "WORKS!" << std::endl;
#endif // VALUE
}
BessieTheCow:

cppreference.comのページの状態:

全てのマクロ展開の評価後に定義され、__has_include式(C ++ 17以降)、ブール値リテラルは、番号0(これは字句キーワードである識別子が、好きではない別のトークンとを含んで置換されていない任意の識別子)。

両方そうfoobar0に置き換えられます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=369197&siteId=1