Maison > développement back-end > C++ > Les appels de fonction peuvent-ils se comporter différemment en C et C malgré un code valide ?

Les appels de fonction peuvent-ils se comporter différemment en C et C malgré un code valide ?

Susan Sarandon
Libérer: 2024-11-08 14:27:02
original
750 Les gens l'ont consulté

Can Function Calls Behave Differently in C and C   Despite Valid Code?

Le code valide en C et C peut-il se comporter différemment lorsqu'il est compilé dans chaque langue ?

C et C partagent de nombreuses similitudes, mais certains codes les constructions peuvent produire des résultats différents lorsqu'elles sont compilées dans ces langages, même si le code est syntaxiquement valide dans les deux.

Appels de fonction vs. Déclarations d'objets

Un de ces scénarios implique des appels de fonction. En C90, les fonctions peuvent être appelées sans déclaration préalable. Cependant, en C , un objet de type f est créé lorsque f() est appelé sans déclaration.

Exemple de code :

Considérez le code suivant :

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

int f() {
    return printf("hello");
}
Copier après la connexion

Comportement Différences :

  • C90 : En C90, le code se compile avec succès et appelle la fonction f(), qui n'a pas été déclarée mais peut être appelée. Il affiche "bonjour".
  • C : En C , le code se compile mais n'imprime pas "bonjour". Au lieu de cela, il crée un objet temporaire de type f. Dès que l'appel f() est terminé, l'objet est détruit, donc "hello" n'est pas imprimé.

Considérations sur la version :

Ce comportement la différence est spécifique au C90. Dans les versions ultérieures du standard C (par exemple C99), il n'est plus valide d'appeler des fonctions sans déclaration. En conséquence, le code se comporterait de la même manière en C et en 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!

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