C6509
Aggiornamento: novembre 2007
C6509
avviso C6509: annotazione non valida: impossibile fare riferimento a 'return' da una precondizione
L'avviso indica che l'istruzione return [espressione] non può essere utilizzata in una precondizione. L'istruzione return viene utilizzata per terminare l'esecuzione di una funzione e restituire il controllo alla funzione chiamante. Il valore dell'espressione, se essa è presente, viene restituito alla funzione chiamante.
Dal momento che una funzione potrebbe utilizzare l'istruzione return per la restituzione di valori, è consentito specificarla come valore di proprietà da utilizzare in una postcondizione.
Esempio
Nel codice seguente l'avviso viene generato in quanto 'return' viene utilizzato in una precondizione:
// C
#include <CodeAnalysis\SourceAnnotations.h>
int f([SA_Pre(ValidElements="return")] char *pc);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
int f([Pre(ValidElements="return")] char *pc);
Per risolvere il problema, utilizzare 'return' in una postcondizione, come illustrato nell'esempio di codice riportato di seguito.
// C
#include <CodeAnalysis\SourceAnnotations.h>
[returnvalue:SA_Post(MustCheck=SA_Yes)]int f(
[SA_Post(ValidElements="return")] char *pc
);
// C++
#include <CodeAnalysis\SourceAnnotations.h>
using namespace vc_attributes;
[returnvalue:Post(MustCheck=Yes)]int f(
[Post(ValidElements="return")] char *pc
);