Condividi tramite


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
                    );