컴파일러 경고(수준 1) C5033
'storage-class-keyword'는 더 이상 지원되는 스토리지 클래스가 아닙니다.
auto
및 register
스토리지 클래스 키워드는 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
제거합니다.