12

これは、 qt のドキュメントで見つけてください。違いは何ですか

#if defined(Foo) && Foo ==  0

#if Foo - 0 ==  0

私が理解している限り、Foo が未定義の場合、後者も false になりますか? これについてどこで読むことができますか?

4

2 に答える 2

1

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も適用されます。

于 2013-01-04T23:19:53.937 に答える