• [^] # Re: Encenser le C? Non!

    Posté par (site web personnel) . En réponse au journal C, un âge remarquable. Évalué à -5.

    Il n'a aucune garantie que la prochaine version de son compilateur fasse la même chose

    Lorsque l'on dépend d'un undefined behavior, on lit la spec du compilo avant de le mettre à jour.

    Il n'a aucune garantie que le changement d'une option de son compilateur continuera à faire un programme qui a le même résultat.

    On lit la spec du compilo avant de faire joujou avec ce qui fonctionne.

    Il ne faut pas avoir d'UB en se disant "je sais ce que je fais".

    C'est le principe même des Undefined Behavior.

    Quand tu programme en C, tu programme en C + Compilo + CPU. C'est pour ça que tu as les mots clés volatile / register / etc... pour contrôler le comportement du compilo dans ton code.

    Le C est un langage bas niveau, c'est de l'ASM avec une syntaxe moins dégueulasse. Si tu fais de l'ASM sans lire la doc de ton CPU, ton programme est certain de ne pas être valide. C'est pareil en C, que tu évite les undefined behavior ou non.

    Non, un programme avec un UB n'est pas un programme valide.

    A ce moment là, le simple fait d'utiliser int rend ton programme invalide, car sa taille change selon le CPU.

    https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg