これは、 qt のドキュメントで見つけてください。違いは何ですか
#if defined(Foo) && Foo == 0
と
#if Foo - 0 == 0
私が理解している限り、Foo が未定義の場合、後者も false になりますか? これについてどこで読むことができますか?
これは、 qt のドキュメントで見つけてください。違いは何ですか
#if defined(Foo) && Foo == 0
と
#if Foo - 0 == 0
私が理解している限り、Foo が未定義の場合、後者も false になりますか? これについてどこで読むことができますか?
Foo==0とFoo-0== 0の違いは、前者ではFooを次の値で定義する必要があることです。
#define Foo 0
することはできません:
#define Foo // Foo == 0 would give an error, cannot evaluate Foo
Foo-0 == 0の場合、Fooは値なしで定義できます
それで:
#if defined(Foo) && Foo == 0
Fooが定義されており、値(この場合は0)を持っていることを意味します。
と:
#if Foo - 0 == 0
つまり、Fooは0で定義されているか、値なしで定義されていますが、最初のケースのようにdefined(Foo)がないため、Fooundefinedも適用されます。