다음을 통해 공유


컴파일러 경고(수준 1) C5033

'storage-class-keyword'는 더 이상 지원되는 스토리지 클래스가 아닙니다.

autoregister 스토리지 클래스 키워드는 C++ 언어에서 더 이상 사용되지 않거나 제거되었습니다.

설명

Visual Studio 2010 이상: C++11 auto 에서 키워드는 더 이상 C++ 스토리지 클래스 지정자가 아니고 register 키워드는 더 이상 사용되지 않습니다.

Visual Studio 2017 버전 15.7 이상: (모드 이상에서 /std:c++17 사용 가능): 키워드는 register C++17 이상 표준의 C++ 언어에서 제거됩니다.

C++ 표준에는 auto 키워드의 원래 의미와 수정된 의미가 정의되어 있습니다. C++11 이전에는 키워드가 auto 자동 스토리지 클래스에서 변수를 선언합니다. 즉, 로컬 수명이 있는 변수입니다. C++11 auto 부터 키워드는 선언의 초기화 식에서 형식이 추론되는 변수를 선언합니다. 이전 버전과의 호환성을 위해 컴파일러 옵션을 사용하여 /Zc:auto 키워드의 auto 의미를 제어할 수 있습니다.

키워드는 register 원래 변수를 레지스터에 배치하도록 컴파일러에 제안하기 위한 것이었습니다. 컴파일러에서 키워드를 일상적으로 무시했습니다. 대신 컴파일러는 변수를 레지스터에 배치하여 호출 규칙 및 최적화 수준을 충족하는지 여부를 제어합니다. 키워드는 register 나중에 사용할 수 있는 표준으로 예약되어 있습니다.

예시

// c5033.cpp
// compile by using: cl /c /std:c++17 c5033.cpp

register int value; // warning C5033: 'register' is no longer a supported storage class

이 문제를 해결하려면 스토리지 클래스 지정자 키워드를 register 제거합니다.

참고 항목

스토리지 클래스