Partilhar via


Static Const Int Linkage não é mais literal

A declaração de um membro constante de uma classe foi alterada de extensões gerenciadas para C++ a Visual C++.

Embora os membros de static const foi integral com suporte ainda, o atributo de vinculação foi alterada. O atributo antigo de vinculação é levado agora um membro integral literal. Por exemplo, considere a seguinte classe de extensão gerenciada:

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

Isso permite gerenciar os seguintes atributos subjacentes de CIL para o campo (observe o atributo literal):

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

Quando isso ainda criar na nova sintaxe:

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

não emite o atributo literal, e em virtude disso não é exibido como uma constante em tempo de execução de CLR:

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

Para ter o mesmo atributo literal entre processosé idioma, a declaração deve ser alterada para o membro de dados com suporte recente de literal , como segue,

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

Consulte também

Referência

literal (Extensões de Componentes C++)

Conceitos

Declarações de membro em uma classe ou uma interface (C++/CLI)