Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
warning C6507: annotation conflict: Null property at Deref=0 on a post condition must be a subset of the Null property on the precondition
This warning indicates that conflicting values for the Null property were used in Pre- and Post- conditions at default dereference level 0. In this case the Pre condition specifies Null=No, and the Post condition specifies Null=Yes. Because the parameter is not passed by reference it cannot be changed; therefore, the Post condition cannot use Null=Yes.
Example
The following code generates this warning because Deref=0 applies to the pointer and not the pointer to character:
// 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);
To correct this warning, either modify the Pre attribute or use double indirection if you want to change the pointer that points to the characters, as shown in the following code:
// 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);
It is valid to specify Pre ( Null=Maybe ) and Post( Null=No ). This is useful for functions that might throw exceptions if the pointer is null: