Articles of c99

Comment le compilateur alloue-t-il de la mémoire sans connaître la taille au moment de la compilation?

J’ai écrit un programme C qui accepte les entrées entières de l’utilisateur, utilisé comme la taille d’un tableau d’entiers, et en utilisant cette valeur, il déclare un tableau de taille donnée et je le confirme en vérifiant la taille du tableau. Code: #include int main(int argc, char const *argv[]) { int n; scanf(“%d”,&n); int k[n]; […]

Le comportement de soustraction de deux pointeurs NULL est-il défini?

La différence entre deux variables de pointeur non vides est-elle définie (par C99 et / ou C ++ 98) si les deux valeurs sont NULL ? Par exemple, disons que j’ai une structure de tampon qui ressemble à ceci: struct buf { char *buf; char *pwrite; char *pread; } ex; Dites, ex.buf pointe vers un […]

Quelles sont les nouvelles fonctionnalités les plus utiles de C99?

C99 existe depuis plus de 10 ans, mais la prise en charge a été lente, de sorte que la plupart des développeurs sont restés avec C89. Même aujourd’hui, je suis parfois un peu surpris quand je découvre les fonctionnalités C99 en code C. Maintenant que la plupart des compilateurs prennent en charge C99 (MSVC étant […]

Type de données booléen C99?

Quel est le type de données booléen C99 et comment l’utiliser?

Pourquoi C ++ 11 ne prend-il pas en charge les listes d’initialisation désignées en tant que C99?

Considérer: struct Person { int height; int weight; int age; }; int main() { Person p { .age = 18 }; } Le code ci-dessus est légal en C99, mais pas en C ++ 11. Quelle est la raison pour laquelle C ++ 11 ne prend pas en charge une fonctionnalité aussi pratique?

Que signifie dot (.) Dans un initialiseur de structure?

static struct fuse_oprations hello_oper = { .getattr = hello_getattr, .readdir = hello_readdir, .open = hello_open, .read = hello_read, }; Je ne comprends pas bien cette syntaxe C. Je ne peux même pas chercher car je ne connais pas le nom de la syntaxe. Qu’est-ce que c’est?

Est-ce que «inline» sans «static» ou «extern» est utile en C99?

Quand j’essaye de construire ce code inline void f() {} int main() { f(); } en utilisant la ligne de commande gcc -std=c99 -oa ac Je reçois une erreur de l’éditeur de liens (référence indéfinie à f ). L’erreur disparaît si j’utilise static inline ou extern inline static inline au lieu de simplement en inline […]

Y at-il des machines, où sizeof (char)! = 1, ou au moins CHAR_BIT> 8?

Existe-t-il des machines (ou des compilateurs), où sizeof(char) != 1 ? La norme C99 indique-t-elle que sizeof(char) lors de la mise en œuvre de la conformité standard DOIT être exactement 1? Si c’est le cas, donnez-moi le numéro de la section et la citation. Mise à jour: Si j’ai une machine (CPU), qui ne peut […]

bool to int conversion

Comme cette conversion est portable. Puis-je être sûr que les deux affirmations sont acceptées? int x = 45; assert(x==0); Ne demandez pas pourquoi. Je sais que c’est moche. Je vous remercie.

Imprimer des pointeurs nuls avec% p est un comportement indéfini?

Est-ce un comportement indéfini pour imprimer des pointeurs null avec le spécificateur de conversion %p ? #include int main(void) { void *p = NULL; printf(“%p”, p); return 0; } La question s’applique au standard C et non aux implémentations C.