Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Advertencia C6507: Conflicto de anotación: la propiedad 'Null' de Deref=0 en una condición posterior debe ser un subconjunto de la propiedad Null en la condición previa
Esta advertencia indica que los valores en conflicto de la propiedad Null se usaron en las condiciones Pre y Post con un nivel de desreferencia de 0. En este caso la condición Pre especifica que Null=No y la condición Post especifica que Null=Yes. Dado que el parámetro no se pasa mediante referencia, no se puede cambiar; por consiguiente, la condición Post no puede utilizar Null=Yes.
Ejemplo
El código siguiente genera esta advertencia porque se aplica Deref=0 al puntero y no el puntero al carácter:
// 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);
Para corregir esta advertencia, modifique el atributo Pre o utilice un direccionamiento indirecto doble si desea cambiar el puntero que señala a los caracteres, como se muestra en el código siguiente:
// 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);
Es válido especificar Pre (Null=Maybe) y Post (Null=No). Resulta de gran utilidad para funciones que podrían iniciar excepciones si el puntero es null: