Maison >développement back-end >C++ >Pourquoi le même code imprime-t-il 'bonjour' en C et rien en C ?

Pourquoi le même code imprime-t-il 'bonjour' en C et rien en C ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-09 16:25:03809parcourir

Why Does the Same Code Print

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!

Déclaration:
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