프로젝트를 빌드 하던 도중 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 |