J'ai l'exemple de code suivant et je voudrais savoir quel type d'annotations je peux utiliser pour les éviter.Annotations pour le Déréférencement NULL dans Prefast et la compilation sur GCC
int Function(classA* pInput) {
if (pInput == NULL) {
classA::Create(pInput);
}
return pInput->value;
}
Le problème est que depuis PREfast évalue que la fonction qu'il ne sait pas que le pointeur Create
initialise.
Je pensais que je pourrais le résoudre en utilisant l'annotation __out
dans le fichier d'en-tête pour classA::Create
mais cela n'a pas fonctionné.
Je me demande s'il y a une bonne alternative à __analysis_assume
partout dans le code de sorte que le préfabriqué le prenne dans la définition de la fonction.
Deuxièmement, Je me demandais comment j'installerais ma configuration de construction pour que je puisse construire mon code nativement sur Linux ou avec GCC avec ces directives de préprocesseur. Est-ce que je devrais vérifier si c'est sur une construction de LINUX et puis ajouter ces annotations en tant que macros vides?
j'ai vu ce style d'indentation un _lot_ au cours de la dernière semaine. Est-ce à partir d'un manuel? –
Il n'y a rien de mal à ce code supposant 'create' est une méthode statique qui affecte réellement et initialiser l'objet. Avez-vous une erreur? – AJG85
Je voudrais faire une motion pour brûler ce style d'indentation avec le feu. –