다음을 통해 공유


리터럴(C++ 구성 요소 확장)

변수 (데이터 멤버)로 표시 literal 에 있는 /clr 컴파일이 되는에 해당 하는 static const 변수.

모든 플랫폼

설명

(모든 런타임에 적용 없음이 언어 기능에 대 한 설명입니다.)

Windows 런타임

설명

(만 Windows 런타임에 적용 없음이 언어 기능에 대 한 설명입니다.)

5yzft952.collapse_all(ko-kr,VS.110).gif요구 사항

컴파일러 옵션:/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

참고 항목

개념

런타임 플랫폼의 구성 요소 확장