Articles of c99

Quelle est la bonne utilisation de printf pour afficher des pointeurs avec des 0

En C, j’aimerais utiliser printf pour afficher les pointeurs, et pour qu’ils s’alignent correctement, j’aimerais les append à 0. Je pense que la bonne façon de faire était de: printf (“% 016p”, ptr); Cela fonctionne, mais ce gcc se plaint avec le message suivant: avertissement: indicateur ‘0’ utilisé avec le format ‘% p’ ​​gnu_printf J’ai […]

Pourquoi le mixage des déclarations et du code était-il interdit jusqu’à C99?

Je suis récemment devenu assistant pédagogique pour un cours universitaire qui enseigne principalement le C. Le cours a été normalisé sur C90, principalement en raison de la prise en charge généralisée du compilateur. Un des concepts très déroutants pour les débutants avec une expérience Java antérieure est la règle selon laquelle les déclarations de variables […]

Quelle est la différence entre intXX_t et int_fastXX_t?

J’ai récemment découvert l’existence du type standard le plus rapide , principalement int_fast32_t et int_fast64_t . On m’a toujours dit que, pour une utilisation normale sur une architecture grand public, il serait préférable d’utiliser un int & long classique qui devrait toujours correspondre à la capacité de lecture par défaut du processeur et éviter ainsi […]

Printf long long en C avec GCC?

Comment imprimer long long int et aussi unsigned long long int dans C99 en utilisant GCC? J’ai recherché les autres articles qui suggèrent d’utiliser %lld mais il donne ces avertissements: avertissement n ° 1: caractère de conversion inconnu “l” au format [-Wformat] | avertissement n ° 2: trop d’arguments pour le format [-Wformat-extra-args] | Pour […]

Des prototypes sont-ils nécessaires pour toutes les fonctions en C89, C90 ou C99?

Pour être véritablement conforme aux normes, toutes les fonctions de C (à l’exception de la principale) doivent-elles avoir un prototype, même si elles ne sont utilisées qu’après leur définition dans la même unité de traduction?

Comment append correctement des échappées hexadécimales dans un littéral de chaîne?

Lorsque vous avez une chaîne en C, vous pouvez append un code hexadécimal direct à l’intérieur. char str[] = “abcde”; // ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, 0x00 char str2[] = “abc\x12\x34”; // ‘a’, ‘b’, ‘c’, 0x12, 0x34, 0x00 Les deux exemples ont 6 octets en mémoire. Maintenant, le problème existe si vous voulez append une […]

Union anonyme dans struct pas en c99?

Voici le code de problème très simplifié que j’ai: enum node_type { t_int, t_double }; struct int_node { int valeur; }; struct double_node { valeur double; }; struct node { enum type_noeud; syndicat { struct int_node int_n; struct double_node double_n; }; }; int main (void) { struct int_node i; valeur i = 10; noeud de […]

Comment C99 est-il universellement supporté?

Dans quelle mesure le standard C99 est-il supporté par les compilateurs actuels? Je comprends que même GCC ne le soutient pas totalement. Est-ce correct? Quelles fonctionnalités de C99 sont supscopes plus que d’autres, c’est-à-dire à quoi puis-je être sûr que la plupart des compilateurs me comprendront?

Quelles fonctions de la bibliothèque standard C encouragent généralement les mauvaises pratiques?

Ceci est inspiré par cette question et les commentaires sur une réponse particulière dans la mesure où j’ai appris que strncpy pas une fonction de gestion de chaînes très sûre en C et qu’elle remplissait les zéros jusqu’à ce qu’elle atteigne n . Spécifiquement, pour citer R .. strncpy ne met pas fin à la […]

Existe-t-il un document décrivant comment Clang gère la précision en virgule flottante en excès?

Il est presque impossible (*) de fournir une sémantique IEEE 754 ssortingcte à un coût raisonnable lorsque les seules instructions à virgule flottante autorisées sont les 387. Cela est particulièrement difficile lorsque l’on souhaite que la FPU continue de travailler sur le significande 64 bits complet afin que le long double type long double soit […]