Partager via


La liaison Static Const Int n'est plus littérale

La déclaration d'un membre constant d'une classe a été modifiée entre extensions managées pour C++ vers Visual C++.

Bien que les membres intégraux d' static const soient encore pris en charge, leur attribut de chaînage a changé.Leur précédent attribut de chaînage est désormais porté par un membre intégral littéral.Par exemple, considérez la classe extensions managées suivante :

public __gc class Constants {
public:
   static const int LOG_DEBUG = 4;
};

Cela génère les attributs CIL sous-jacents suivants pour le champ (notez l'attribut littéral) :

.field public static literal int32 
modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)

Bien qu'elle continue à compiler dans la nouvelle syntaxe :

public ref class Constants {
public:
   static const int LOG_DEBUG = 4;
};

il n'émet plus l'attribut littéral, et par conséquent n'est pas affichée comme constante par le runtime CLR :

.field public static int32 modopt([Microsoft.VisualC]Microsoft.VisualC.IsConstModifier) STANDARD_CLIENT_PRX = int32(0x00000004)

Pour conserver le même attribut littéral d'interlangue, la déclaration en la donnée membre récemment prise en charge d' literal , comme suit,

public ref class Constants {
public:
   literal int LOG_DEBUG = 4;
};

Voir aussi

Référence

littéral (extensions du composant C++)

Concepts

Déclarations de membre dans une classe ou interface (C++/CLI)