Maison > développement back-end > C++ > Le code valide en C et C peut-il se comporter différemment lorsqu'il est compilé avec des compilateurs spécifiques au langage ?

Le code valide en C et C peut-il se comporter différemment lorsqu'il est compilé avec des compilateurs spécifiques au langage ?

Susan Sarandon
Libérer: 2024-11-08 15:10:02
original
313 Les gens l'ont consulté

Can Valid Code in Both C and C   Behave Differently When Compiled with Language-Specific Compilers?

Le code valide en C et C peut-il se comporter différemment avec les compilateurs spécifiques à un langage ?

C et C partagent de nombreuses similitudes, mais des différences notables exister. Cela soulève la question de savoir si un code valide dans les deux langages pourrait présenter des comportements distincts lorsqu'il est compilé à l'aide de compilateurs spécifiques pour chaque langage.

Ignorer les hacks liés au préprocesseur et supposer l'uniformité dans les aspects définis par l'implémentation, un scénario dans lequel une telle divergence de comportement se pose est la gestion des appels de fonctions et des déclarations d'objets.

Dans ce contexte, l'exemple ci-dessous démontre la disparité entre C et C :

#include <stdio.h>

struct f { int x; };

int main() {
    f();
}

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

En C , ce code déclenche la création de un objet f temporaire qui est immédiatement détruit. Ainsi, il ne produit aucune sortie.

En revanche, C90 permet d'appeler des fonctions non déclarées. En conséquence, le code affichera "bonjour" lorsqu'il sera compilé avec un compilateur C90.

Cette différence est enracinée dans le fait que C90 traite la déclaration f() comme un appel de fonction, tandis que C l'interprète comme le déclaration d'un objet f. Cette distinction met en évidence les nuances subtiles qui peuvent conduire à des comportements variables selon les différents langages de programmation.

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