L'incomplétude de C : là où C s'écarte de son sous-ensemble
Malgré les affirmations fréquentes selon lesquelles C est entièrement contenu dans C, des distinctions subtiles rendent cela affirmation incomplète. Cet article met en évidence les cas où le code acceptable en C devient incompatible en C , mettant en lumière les différences qui les distinguent.
Définition complexe
C applique des règles plus strictes pour les variables définitions, interdisant toute tentative. Déclarer la même variable à plusieurs reprises, comme dans int n ; int n;, n'est pas autorisé en C , contrairement à C.
Disparité de compatibilité des tableaux
C introduit des contraintes de compatibilité de type qui n'existent pas en C. En C, un tableau int a[1] peut être affecté à un pointeur int (*ap)[] = &a, bien qu'il soit de types différents (int[] vs. int[1]). Cette affectation échouerait en C.
Définitions de fonctions obsolètes
C abandonne le style K&R de définitions de fonctions, rendant des constructions comme int b(a) int a ; { } syntaxiquement incorrect.
Différence de portée des structures imbriquées
Les structures imbriquées en C ont une portée de classe, contrairement à C. Par conséquent, déclarer une structure imbriquée en dehors d'une structure englobante définition, telle que struct B b;, entraîne une erreur de type incomplète en C .
Spécificateurs de type explicites requis
C impose des spécificateurs de type explicites pour toutes les déclarations. L'omission des informations de type, comme dans auto a;, entraîne des erreurs de syntaxe.
C99 contribue à d'autres divergences
C99 introduit des incompatibilités supplémentaires :
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!