Je veux faire quelque chose dans C99 d’une manière, sinon l’exécuter d’une autre manière. Quelle est la #define à vérifier? #ifdef C99 … #else … #endif
J’ai reçu le message d’erreur suivant lors de la compilation du code C: error: ‘for’ loop initial declarations are only allowed in C99 mode note: use option -std=c99 or -std=gnu99 to comstack your code Qu’est-ce que ça veut dire? Comment le réparer?
Je ne comprends pas pourquoi cela est faux: const int n = 5; int x[n] = { 1,1,3,4,5 }; même si n est déjà une valeur const. Cela semble correct pour le compilateur GNU: const int n = 5; int x[n]; /*without initialization*/ Je connais la fonctionnalité VLA de C99 et je pense que cela […]
C’est le code C99: typedef struct expr_t { int n_children; foo data; // Maybe whatever type with unknown alignment struct expr_t *children[]; } expr_t; Maintenant, comment allouer de la mémoire? expr_t *e = malloc (sizeof (expr_t) + n * sizeof (expr_t *)); ou expr_t *e = malloc (offsetof (expr_t, children) + n * sizeof (expr_t […]
Je viens de trébucher sur une assertion, qui a échoué, car elle comparait false au type de retour d’une fonction, car la fonction elle-même renvoyait une valeur booléenne et l’assert vérifiait non seulement la valeur, mais également le type de la valeur de retour pour correspondre à celle de false, pour garantir qu’un bool est […]
Je voudrais avoir une chaîne (char *) analysée dans une structure tm en C. Y a-t-il une fonction intégrée pour faire cela? Je fais référence à ANSI C dans la norme C99.
La norme C spécifie deux formes de définition de main pour une implémentation hébergée: int main(void) { /* … */ } et int main(int argc, char *argv[]) { /* … */ } Il peut être défini de manière “équivalente” à celle ci-dessus (par exemple, vous pouvez modifier les noms des parameters, remplacer int par un […]
De la norme C99, 6.7 (5): Une déclaration spécifie l’interprétation et les atsortingbuts d’un ensemble d’identifiants. Une définition d’un identifiant est une déclaration pour cet identifiant qui: pour un object, le stockage est réservé à cet object; pour une fonction, inclut le corps de la fonction; pour une constante d’énumération ou un nom typedef, est […]
Cette question est presque une copie de certaines des questions que j’ai trouvées, mais elle concerne spécifiquement POSIX et un exemple très courant dans les pthreads que j’ai rencontré à plusieurs resockets. Je suis surtout préoccupé par l’état actuel des choses (c’est-à-dire C99 et POSIX.1-2008 ou ultérieur), mais toute information historique intéressante l’est aussi. La […]
Je veux généralement éviter un code comme celui-ci: #include int main(int argc, char *argv[]){ int n = 3; for (int n = 1; n <= 10; n++){ printf("%d\n", n); } printf("%d\n", n); } Comment puis-je trouver un tel usage des variables? Cela signifie que, dans la même fonction, une variable “plus locale” a le même […]