Maison  >  Article  >  développement back-end  >  Les constantes non définies sont-elles évaluées comme 0 dans les macros C et C `#if` ?

Les constantes non définies sont-elles évaluées comme 0 dans les macros C et C `#if` ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-10 16:29:02685parcourir

Are Undefined Constants Evaluated as 0 in C and C   `#if` Macros?

Une constante non définie est-elle évaluée comme 0 dans les macros C et C #if ?

Une hypothèse courante est que les préprocesseurs interprètent les constantes non définies comme 0 lorsqu'elles sont utilisées dans des conditions #if . Mais peut-on s'y fier de manière cohérente ou cela donne-t-il des résultats imprévisibles ?

La réponse réside dans les normes C99 et C 17.

Norme C99

La norme C99 précise au §6.10.1¶3 que :

"Après tous remplacements en raison de l'expansion de la macro et de l'opérateur unaire défini, tous les identifiants restants sont remplacés par le numéro pp 0."

Norme C 17

De même, le La norme C 17 indique au §16.1 ¶4 :

"Après que tous les remplacements dus à l'expansion de la macro et à l'opérateur unaire défini aient été effectués, tous les identifiants et mots-clés restants, à l'exception de vrai et faux, sont remplacés par le numéro pp 0."

Conclusion

Par conséquent, il est effectivement fiable en C et C pour supposer que les constantes non définies sont évaluées comme 0 dans les conditions #if. Ce comportement est explicitement défini dans les normes du langage, garantissant une exécution cohérente sur différents compilateurs et plates-formes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn