Partilhar via


Ligação de Int Const estático não é mais Literal

Declaração de um membro constante de uma classe foi alterado a partir de Managed Extensions for C++ para Visual C++ 2010.

Embora static const membros integrais ainda são suportados, mudou seu atributo de vinculação. Agora, seu atributo de ligação anterior é executado em um membro integral literal. Por exemplo, considere a seguinte classe Managed Extensions:

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

Isso gera os seguintes atributos CIL subjacentes para o campo (Observe o atributo literal) (em inglês):

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

Enquanto 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 como 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 literal inter-language, a declaração deve ser alterada para recentemente com suporte literal o membro de dados, como segue,

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

Consulte também

Referência

literal (Visual C++)

Conceitos

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