Différences de comportement dans le code valide entre C et C
Bien que C et C partagent de nombreuses similitudes, il existe certains cas où du code valide dans les deux les langages peuvent produire des résultats différents lorsqu'ils sont compilés dans chaque langage respectif.
Appel de fonction et objet Déclarations
L'un de ces scénarios est lié à la différence entre les appels de fonction et les déclarations d'objet. En C90, les fonctions peuvent être appelées sans être déclarées au préalable. En C, cependant, les fonctions non déclarées ne sont pas autorisées. Cette distinction peut conduire à un comportement différent lors de la compilation du code suivant :
#include <stdio.h> struct f { int x; }; int main() { f(); } int f() { return printf("hello"); }
En C , ce code n'imprimera rien car un objet temporaire de type f est créé et détruit, entraînant la perte du membre x . En C90, cependant, il affichera "bonjour" puisque les fonctions peuvent être appelées sans avoir été déclarées.
Désambiguïsation des noms
Un autre point à noter est l'utilisation de le nom f dans l'exemple de code. C et C autorisent tous deux l'utilisation du même nom pour les fonctions et les structures. Pour créer un objet en C , struct f doit être explicitement spécifié. Si le mot-clé struct est omis, le code sera interprété comme un appel de fonction. Cette distinction, combinée à la différence dans les conventions d'appel, contribue aux comportements différents observés lors de la compilation du code en C et C .
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!