La meilleure façon d'écrire ceci est comme un commentaire doxygen ou une entrée dans n'importe quel système de documentation que vous utilisez, informant les appelants de quelque chose qu'ils devraient déjà savoir: NULL
n'est pas un pointeur valide. Même là, plutôt que spécial-casing la remarque que NULL
n'est pas valide, il est plus logique de documenter simplement l'argument x
comme étant un pointeur valide au type foo
. Cela couvre également les milliards d'autres valeurs de pointeurs invalides. Personnellement je préfère ne pas perdre de temps à documenter cette exigence pour chaque fonction mais plutôt documenter en tant que partie générale de mes interfaces de bibliothèque que, sauf indication contraire pour une fonction particulière, tous les arguments pointeurs doivent être des pointeurs valides aux objets du type correspondant.
Si vous voulez vraiment documenter ce au niveau de la source aussi, C99 a une façon, en utilisant:
void foo(int x[static 1]);
au lieu d'une des opérations suivantes:
void foo(int *x);
void foo(int x[]);
Le chèque ci-dessus pour une Valeur NULL, peut-il être fait via une MACRO? Est-ce conseillé ... –
Oui, cela peut être fait avec une macro, mais ce n'est pas recommandé. –