次の方法で共有


C6507

警告 C6507: 注釈の競合です: 後条件の Deref=0 での Null プロパティは、前提条件での Null プロパティのサブセットでなければなりません

この警告は、既定の逆参照レベル 0 で、Pre 条件および Post 条件において Null プロパティの競合する値が使用されたことを示します。 この場合、Pre 条件は Null=No を指定し、Post 条件は Null=Yes を指定します。 パラメーターは参照によって渡されないので変更できません。したがって、Post 条件は Null=Yes を使用できません。

使用例

次のコードでは、Deref=0 がポインターに適用され、文字へのポインターには適用されないため、この警告が発生します。

// C
#include <CodeAnalysis\SourceAnnotations.h>
void f ([SA_Pre(Null=SA_No)] [SA_Post(Null=SA_Yes)] char *pc); 

// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f([Pre(Null=No)] [Post(Null=Yes)] char *pc); 

この問題を解決するために文字を指すポインターを変更する場合は、次のコードに示すように、Pre 属性を変更するか、二重の間接参照を使用します。

// C
#include <CodeAnalysis\SourceAnnotations.h>
void f1 ([SA_Pre(Null=SA_Maybe)] [SA_Post(Null=SA_Yes)] char *pc); 
// or
void f2 ([SA_Pre(Deref=1, Null=SA_No)] [SA_Post(Null=SA_Yes)] char **pc);

// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
void f1([Pre(Null=Maybe)] [Post(Null=Yes)] char *pc);
// or 
void f2 ([Pre(Deref=1, Null=No)] [Post(Null=Yes)] char **pc);

Pre ( Null=Maybe ) および Post ( Null=No ) の指定は有効です。 これは、ポインターが null の場合に例外をスローする関数に対して有用です。

参照

その他の技術情報

注釈のプロパティ