Ce genre de problème ne risque pas d'exister en C puisque le langage est très simple et n'introduit pas d'abstraction cherchant à limiter ce qui peut être fait avec.
En réalité, la raison pour laquelle ce genre de «bug» ne peut pas arriver en C, ce n'est pas tant que le langage est «simple», mais parce que sa spécification est laxiste : elle stipule explicitement que les développeurs de compilateurs peuvent faire absolument ce qu'ils veulent dès qu'un cas tordu se présente : ce sont les Undefined Behavior. Les compilateurs ont le droit de supposer que ces cas là n'arrivent jamais, et si jamais le programmeur provoque l'un de ces cas, alors le compilateur est libre de faire ce qu'il veut, le développeur n'avait qu'à pas être bête.
Dans ces conditions, c'est plus effectivement facile pour un compilateur de respecter la spec' !
[^] # Re: Oui mais non
Posté par StyMaar . En réponse au journal ADN overflow : c'est de la faute de l'open source. Évalué à 2.
En réalité, la raison pour laquelle ce genre de «bug» ne peut pas arriver en C, ce n'est pas tant que le langage est «simple», mais parce que sa spécification est laxiste : elle stipule explicitement que les développeurs de compilateurs peuvent faire absolument ce qu'ils veulent dès qu'un cas tordu se présente : ce sont les Undefined Behavior. Les compilateurs ont le droit de supposer que ces cas là n'arrivent jamais, et si jamais le programmeur provoque l'un de ces cas, alors le compilateur est libre de faire ce qu'il veut, le développeur n'avait qu'à pas être bête.
Dans ces conditions, c'est plus effectivement facile pour un compilateur de respecter la spec' !