Règles du forum

Les standards applicables à l’informatique et aux supports numériques, seulement. Les autres standards techniques ou scientifiques, ne sont pas prévus pour l’instant, car peu accessibles en pratique.

Auteur Message
Administrateur
Avatar de l’utilisateur
Ne fait pas parti d’un standard, mais est utile à mentionner : c-faq.com.
Profil
Administrateur
Avatar de l’utilisateur
Voir aussi, sur des ajouts au standard, certains approuvés certains abandonnés : Experimental C standard libraries (cppreference.com).
Profil
Administrateur
Avatar de l’utilisateur
Bien que le C soit un standard de fait, il n’en est pas universel pour autant. L’article ci‑dessous (qui me parle, pour des raisons que je ne décrit pas parce que pas assez de volonté pour ça à l’instant), décrit comment les processeurs actuels sont devenus complexes et gourmands en énergie, comme conséquence de vouloir continuer à donner l’illusion que le modèle sémantique du C est toujours valable alors qu’il ne l’est plus de puis longtemps. Dans le cas de l’exemple décrit dans l’article, la conséquence est même une lacune dans la fiabilité, une lacune malheureusement difficile à éviter.

Voir : C is not a low-level language — your computer is not a fast PDP‑11 (acm.org), David Chisnall, 2018.
Profil
Administrateur
Avatar de l’utilisateur
Hibou a écrit : 
[…]

Les ajouts aux C99 depuis le C89 et C90, ne sont pas d’une importance capitale, surtout pour du C généré automatiquement, non‑pas écrit à la main. […]

Le mot clé “ restrict ” pour les “ pointer ”, pourrait être considéré comme capital, si on oubliait qu’il ne s’applique qu’au pointeur auquel il s’applique et non‑pas à ce que design le pointeur. En particulier, restrict ne permet pas d’affirmation sur l’aliasing indirect.

Il n’y a même pas besoin d’aller chercher une indirection lointaine, elle peut être tout prêt : si p1 et p2 désignent deux tableaux et que p2 pointe vers un élément de p1, on a bien un aliasing alors que p1 et p2 sont différents.
Profil
Administrateur
Avatar de l’utilisateur
Hibou a écrit : 
Comme le standard du C a des lacunes sémantiques, un ajout au sujet : Defining the Undefinedness of C (illinois.edu).

C’est un PDF daté de 2012 et qui ne fait pas partie du standard.

L’option “ -fsanitize=undefined ”, de Clang, le compilateur C de l’infrastructure LLVM, permet d’aider à déceler les opérations dont le résultat est indéfini d’après le standard du C. L’option produit une version instrumentée du programme, ce n’est pas une détection par de l’analyse statique.

En marge, même si ce n’est pas le sujet, ne pas oublier que le standard POSIX, lui aussi, contient des notes à propos de circonstances dans lesquelles le résultat de certaines opérations doit être considéré comme indéfini.
Profil