Maison > développement back-end > C++ > Pourquoi Visual Studio compile-t-il des références non constantes aux fichiers temporaires alors que d'autres compilateurs ne le font pas ?

Pourquoi Visual Studio compile-t-il des références non constantes aux fichiers temporaires alors que d'autres compilateurs ne le font pas ?

Linda Hamilton
Libérer: 2024-12-25 20:24:13
original
199 Les gens l'ont consulté

Why Does Visual Studio Compile Non-Constant References to Temporaries While Other Compilers Don't?

Référence non constante liée à une référence temporaire : anomalie de Visual Studio

Ce problème survient lors de la compilation de code qui tente de lier une référence non constante à un objet temporaire. Bien que Visual Studio autorise la compilation d'un tel code, d'autres compilateurs, comme gcc, l'identifient comme une erreur de compilation.

Explication

Dans l'exemple fourni :

class Zebra {int x;};
Zebra goo() {Zebra z; return z;}
void foo(Zebra &x)
{
    Zebra y;
    x = y;
    foo(goo());
}
Copier après la connexion

Le code tente de lier une référence non constante (Zebra &x) à un objet temporaire renvoyé par la fonction goo(). Selon la norme C, cela devrait entraîner une erreur de compilation.

Extension de Visual Studio

Cependant, Visual Studio possède une ancienne extension qui permet ce comportement. Cette extension traite essentiellement les références à des objets temporaires comme s'il s'agissait de références à des objets non temporaires.

Cette extension a été introduite pour prendre en charge les bases de code existantes. Cependant, cela peut conduire à un comportement inattendu et n'est généralement pas recommandé.

Approche recommandée

Pour éviter ces anomalies, il est préférable de désactiver l'extension à l'aide du /Za indicateur du compilateur. Cela garantira que le code adhère à la norme C et sera traité de manière cohérente par différents compilateurs.

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