D'un projet de C11 :
3.4.3 comportement non défini
comportement, lors de l'utilisation d'une construction de programme non portable ou erronée, ou de données erronées, pour lesquelles la présente Norme Internationale n'impose aucune exigence
NOTE Les comportements non définis possibles vont de l'ignorance totale de la situation avec des résultats imprévisibles, au comportement pendant la traduction ou l'exécution du programme d'une manière documentée et caractéristique de l'environnement (avec ou sans émission d'un message de diagnostic). environnement (avec ou sans l'émission d'un message de diagnostic), <strong>pour terminer une traduction </strong>ou l'exécution (avec l'émission d'un message de diagnostic).
L'arrêt de la traduction est mentionné comme une conséquence possible d'un comportement non défini dans la note (non normative), donc les effets au moment de la compilation ne sont clairement pas destinés à être exclus. La partie normative le permet certainement - elle permet tout. Ainsi, un compilateur conforme peut interrompre la traduction s'il détecte un comportement non défini pendant la compilation.
En outre, en Conformité à $4 :
Si une exigence " doit " ou " ne doit pas " qui apparaît en dehors d'une contrainte ou d'une contrainte d'exécution est violée, le comportement est indéfini. Dans la présente Norme internationale, le comportement non défini est indiqué par les mots " comportement non défini " ou par l'omission de toute définition explicite du comportement. Il n'y a pas de différence d'accentuation entre ces trois expressions ; elles décrivent toutes un "comportement indéfini".
Aucune distinction n'est faite, ni dans la définition normative ni dans la description de conformité, entre le "temps de traduction" et le "temps d'exécution". Aucune différence n'est faite entre les différentes "variétés" de comportement non défini.
En outre, Rapport de défaut n°109 souligné par ouah en Un code qui ne sera jamais exécuté peut-il invoquer un comportement indéfini ? a ceci dans sa réponse :
[...] Si une expression dont l'évaluation entraînerait un comportement non défini apparaît dans un contexte où une expression constante est requise, le programme qui la contient n'est pas strictement conforme. De plus, si chaque exécution possible d'un programme donné entraîne un comportement non défini, le programme en question n'est pas strictement conforme.
Une implémentation conforme ne doit pas échouer à traduire un programme strictement conforme simplement parce qu'une certaine exécution possible de ce programme entraînerait un comportement non défini. [...]
Cela indiquerait qu'un compilateur ne peut pas échouer une traduction s'il ne peut pas déterminer statiquement que tous les chemins mènent à un comportement non défini.