C,C++

[C++]warning C4482 : 비표준 확장 에 대해서

Dongjun_ 2019. 1. 31. 13:51

프로젝트를 빌드 하던 도중 warning C4482 을 발견 했다.

 

경고 1

warning C4482: 비표준 확장이 사용되었습니다. 정규화된 이름에 'MyCodeException::ExceptionID' 열거형을 사용했습니다. 

[경로]\[파일].cpp [줄]

 

위와 같은 에로가 발생하는 이유는 함수 호출 파라미터에 enum(열거형)을 전달 할 때 발생한다.

ex) AfxMessageBox(MyCodeException::ExceptionID::num1);

 

- 정식 설명 -

이 경고 메세지는 형식 내부(클래스, 구조체, 네임스페이스 등)에 선언된 이름있는 enum을 사용하게 되었을 때 나타나는 증상이다.

 

빌드시 경고 메세지를 없애기 위해서는

[형식 내부명]::[열거형 항목] 으로 사용하면 된다.

ex) AfxMessageBox(MyCodeException::num1);

 

다만 형식 내부에 여러개의 enum이 선언될 수도 있다.

 

namespace {
	namespace1 {
		enum {
			...
		}
	}

	namespace2 {
		enum {
			...
		}
	}
}

 

위와 같이 선언하는 방법도 있다.

ex) AfxMessageBox(namespace::namespace1::num1)

다만 코드가 더럽다...

 

더 좋은 방법이 있을지도....

반응형

'C,C++' 카테고리의 다른 글

[C/C++] WORD, DWORD, QWORD  (1) 2019.03.04
[C/C++] h, cpp 의 관계, include 의 원리  (0) 2019.02.14
[C++]type casting에 관하여  (0) 2019.01.31
Segment 란  (0) 2019.01.23
메모리 영역(Heap, Stack, Data, Code)  (0) 2019.01.23