Maison > développement back-end > C++ > Le C est-il vraiment un sous-ensemble de C : explorer les principales différences et exceptions ?

Le C est-il vraiment un sous-ensemble de C : explorer les principales différences et exceptions ?

Linda Hamilton
Libérer: 2024-12-31 14:05:10
original
834 Les gens l'ont consulté

Is C Truly a Subset of C  :  Exploring Key Differences and Exceptions?

Exceptions au fait que C soit un sous-ensemble de C

Bien qu'il soit communément affirmé que C est un sous-ensemble de C, cette affirmation n'est pas entièrement exacte . Des différences apparaissent lors de la comparaison de versions spécifiques de C et C.

Différences C89 par rapport à C

  • Aucune définition provisoire : C ne le fait pas Ne permet pas de redéclarer des variables portant le même nom sans définition entre les deux.
  • Type de tableau différent Compatibilité : C fait la distinction entre les tableaux d'une taille spécifique (par exemple, int a[1]) et les tableaux de taille non spécifiée (par exemple, int (*ap)[]), alors que C leur permet d'être compatibles.
  • Pas de style de déclaration de fonction K&R : C nécessite une syntaxe différente pour les définitions de fonctions, interdisant l'ancien style K&R (par exemple, int b(a) int a; { }).
  • Différences de portée des structures imbriquées : En C , une structure imbriquée est traitée comme une déclaration au niveau de la classe, la rendant inaccessible en dehors de l'environnement englobant. struct.
  • Pas de type int par défaut : En C , les variables automatiques nécessitent des spécificateurs de type explicites, contrairement en C où int est supposé par défaut.

Différences C99 vs C

C99 introduit des écarts supplémentaires par rapport à la stricte compatibilité C :

  • Restrictions relatives aux dimensions du tableau : C99 interdit certains caractères spéciaux dans la spécification des dimensions du tableau de paramètres de la fonction.
  • Absence de tableaux de longueur variable : Les tableaux de longueur variable, déclarés à l'aide d'expressions non constantes comme tailles, ne sont pas pris en charge en C .
  • Aucun membre de tableau flexible : Les membres de tableau flexibles de C99, dont la taille peut être spécifiée au moment de l'exécution, sont incompatibles avec C99. .
  • Absence de qualificatif restrict : Le qualificatif restrict de C, utilisé à des fins d'optimisation, n'est pas disponible en C99.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal