Pour les vieux cons de mon genre, voici quelques evolutions du C ... ====== c99 ====== Lien: [[http://nicolasj.developpez.com/articles/c99/]] Avec **''gcc''** , si necessaire, ajouter : -std=c99 Mais ce ne l'est plus depuis gcc > 3 ... Enfin, ca depend: L'option est parfois nécessaire; le plus souvant, non. ===== vite dit ===== ==== inline ==== **''inline''** est reconnu pour "macrofier" une fonction. le **''static''** est le bienvenu dans les "include" static inline int carre(int x) { return( x*x ); } ==== long long ==== represente au moins 64 bits... accompagné des notations **''ll''** ou **''L''** ==== __func__ ==== Le numéro de la ligne est en **''__LINE__''** , alors que le nom de la fonction est en: __func__ Declarer, quelque part, comme cela: static const char __func__[]; Exemple: printf("la fonction courante: %s\n", __func__ ); ===== tableau dynamique ===== On peut declarer des tableaux de taille dynamique sur la pile ! (on peut oublier la fonction **''alloca''**) int function( int x ) { char tableau[x]; // ... etc... } Encore plus fort: for( i=1; i<10; i++ ) { long tableau[i]; printf("%d tableau de taille: %d\n",i,sizeof(tableau)); } output: 1 tableau de taille: 4 2 tableau de taille: 8 3 tableau de taille: 12 ... ===== structure ===== ==== initialiser ==== On peut initialiser le contenu d'une structure comme ça: struct T { int a; int b; int c; }; struct T toto = { .b = 123, .c = 456 }; Et sur la pile, c'est possible avec des valeurs non connus (non constante)... ==== tableau en fin ==== On peut faire: struct T { int len; char string[]; }; "string" a une taille indefinie, mais commence a la fin de la structure. ===== Chaines ===== Pourquoi associé une chaine et une variable !? Voila que ça marche aussi comme cela: for( int i=0; ; i++ ) { // ----------------------------- char c = "Hello Word!" [i]; // ----------------------------- if ( !c ) { printf("\n"); break; } else printf("%c",c); } Resultat: Hello Word! bien sur...