Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer


The Valid property specifies whether a value satisfies the validity constraints of its type. This property is allowed on Pre and Post attributes and can be used on any data types.

The Valid property must be set using one of the following values:

  • SA_Yes - the value is valid.

  • SA_No - the value is not valid.

  • SA_Maybe - the value might be valid.

The validity constraints for the various built-in types are as follows:

  • Integral and floating-point types – the value has been initialized, that is, it does not contain invalid data.

  • Bool – the value is either True or False.

  • Pointer types – the pointer is either NULL or points to an accessible memory location. The value at the location pointed to by the pointer is not necessarily valid. The validity of that value is determined by the value of the Valid property for the level of dereference one greater than that of the pointer value.

  • Reference types – same as pointer types, except that a reference type cannot be NULL.

The following code shows how to use the Valid property:

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

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