Depuis l'OP états, le code a été écrit par l'expérience du compilateur ingénieurs, il est possible que cela soit l'intention du code:
-
*(int32 *) 0 = 0;
est reconnu par ce C de la mise en œuvre du code qui provoque le comportement non défini par la norme et connu à cette mise en œuvre illégale.
- L'
for (;;)
en outre indique que ce code n'est jamais sorti.
- Le compilateur ingénieurs de savoir que l'optimiseur de reconnaître ce code et en déduire qu'elle peut être "optimisé loin", parce que tout programme qui atteint ce code est autorisé à avoir un comportement, de sorte que l'optimiseur peut choisir de lui donner le comportement que si le code n'est jamais atteint.1
Ce type de raisonnement est possible uniquement si vous avez des connaissances spécifiques du fonctionnement interne d'une œuvre. C'est le genre de chose qu'un compilateur ingénieur peut inclure dans l'en-tête pour un C mise en œuvre, peut-être pour marquer que certains de code (comme le code après un abort
appel) n'est jamais atteint. Il ne doit jamais être utilisé en programmation.
1 considérons Par exemple ce code:
if (a)
for (;;)
*(int 32 *) 0 = 0;
else
foo();
Le compilateur peut reconnaître que la clause est autorisé à avoir un comportement. Par conséquent, le compilateur est libre de choisir le comportement qu'il a fait. Pour des raisons de simplicité, qu'elle choisit d'avoir le même comportement que l' foo();
. Ensuite, le code devient:
if (a)
foo();
else
foo();
et peut être encore simplifiée:
foo();