리터럴(C++ 구성 요소 확장)
변수 (데이터 멤버)로 표시 literal 에 있는 /clr 컴파일이 되는에 해당 하는 static const 변수.
모든 플랫폼
설명
(모든 런타임에 적용 없음이 언어 기능에 대 한 설명입니다.)
Windows 런타임
설명
(만 Windows 런타임에 적용 없음이 언어 기능에 대 한 설명입니다.)
요구 사항
컴파일러 옵션:/ZW
설명
데이터 멤버 이름으로 표시할 literal선언할 때 초기화 해야 하 고 값이 정수 계열 상수, 열거형 또는 문자열 형식 이어야 합니다.사용자 정의 변환 형식에 정적 const 데이터 멤버는 초기화 식의 형식에서 변환이 요구 하지 않아야 합니다.
메모리가 런타임에 리터럴 필드에 할당 되지 않습니다. 컴파일러만 그 값의 메타 데이터 클래스를 삽입합니다.
변수를 표시 합니다. static const 다른 컴파일러에 대 한 메타 데이터를 사용할 수 없습니다.
자세한 내용은 Static (C++) 및 const (C++)을 참조하십시오.
literal상황에 맞는 키워드가입니다.자세한 내용은 상황에 맞는 키워드(C++ 구성 요소 확장)를 참조하십시오.
예제
보여 주는이 예제는 literal 변수를 의미 합니다. static.
// mcppv2_literal.cpp
// compile with: /clr
ref struct X {
literal int i = 4;
};
int main() {
int value = X::i;
}
다음 샘플에서는 리터럴 메타 데이터에서 작업의 영향을 보여 줍니다.
// mcppv2_literal2.cpp
// compile with: /clr /LD
public ref struct A {
literal int lit = 0;
static const int sc = 1;
};
메타 데이터에서 차이점을 알 sc 및 lit:는 modopt 지시문에 적용 sc, 즉 무시할 수 다른 컴파일러에서.
.field public static int32 modopt([mscorlib]System.Runtime.CompilerServices.IsConst) sc = int32(0x0000000A)
.field public static literal int32 lit = int32(0x0000000A)
C#에서 작성 된 다음 샘플에서는 앞의 예제에서 생성 된 메타 데이터를 참조 하 고의 영향을 보여 줍니다. literal 및 static const 변수:
// mcppv2_literal3.cs
// compile with: /reference:mcppv2_literal2.dll
// A C# program
class B {
public static void Main() {
// OK
System.Console.WriteLine(A.lit);
System.Console.WriteLine(A.sc);
// C# does not enforce C++ const
A.sc = 9;
System.Console.WriteLine(A.sc);
// C# enforces const for a literal
A.lit = 9; // CS0131
// you can assign a C++ literal variable to a C# const variable
const int i = A.lit;
System.Console.WriteLine(i);
// but you cannot assign a C++ static const variable
// to a C# const variable
const int j = A.sc; // CS0133
System.Console.WriteLine(j);
}
}
요구 사항
컴파일러 옵션:/clr