Partilhar via


Estático em Int Const ligação não é literal

Declaração de um membro de uma classe constante foi alterado de gerenciado Extensions para C++ para Visual C++ 2008.

Embora static const membros integrais ainda são suportados, seu atributo de vinculação foi alterado. Seu atributo de vinculação anterior agora é executado em um literal integral de membros.Por exemplo, considere a seguinte classe gerenciado Extensions:

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

Isso gera os seguintes atributos CIL subjacentes do campo (Observe o atributo literal):

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

Embora isso ainda compila sob a nova sintaxe:

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

Ele não emite o atributo literal e, portanto, não estiver exibido sistema autônomo uma constante em tempo de execução CLR:

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

Para ter o mesmo atributo inter-linguagem literal, a declaração deve ser alterada para o recém-suportados literal membro de dados, sistema autônomo a seguir,

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

Consulte também

Conceitos

Declarações de membro dentro de uma classe ou interface

Referência

literal (Visual C++)