warning 에 대하여

Programming/C++ Language 2015. 1. 7. 11:05

1. field 'A' will be initialized after field 'B' [ -Wreorder ]


A가 B 다음에 초기화 될 거라는 경고 이다.Class 의 변수는 생성자에 나열된 순서대로 초기화 되는 것이 아니라, Class 에 선언된 순서대로 초기화가 된다. 따라서 A 와 B 가 다른 변수에 의존적으로 초기화가 될 경우, 의도치 않은 값으로 초기화가 되는 것을 방지하기 위한 경고이다.

Class TestClass{ int A; int B; }

TestClass() : B(n++), A(n++)

위와 같은 코드에서 n이 10일 경우, B에 10, A에 11이 들어가도록 의도적으로 개발을 했다고 할 경우

실제 결과는 A가 10이고 B가 11이 된다.


2. Suppressing warning


switch case 를 사용할 때, 의도적으로 break 를 빼는 경우가 있는데 

이때 컴파일러에서 no break at the end of case 라는 경고를 보여준다. 

이를 없애기 위해서는 eclipse 에서는 해당 경고에 마우스 오른쪽을 누르면 "Customize Problem..." 이라는 메뉴가 있다. 

여기에 보면 Comment text to suppress the problem 이라는 란이 있는데, 

여기에 있는 텍스트가 해당 경고가 표시되는 부분에 주석으로 포함되어 있으면 해당 경고가 사라지게 된다. 

switch(value){ 

case 1: 

... 

// no break

case 2:

break;

}


'Programming > C++ Language' 카테고리의 다른 글

static_cast 와 dynamic_cast  (0) 2015.01.07
typeid 키워드  (0) 2014.04.15
Unique Pointer  (0) 2014.03.03
[C++] 동적바인딩( Dynamic binding )  (0) 2011.01.03
[C++] this 포인터 사용하기  (0) 2010.07.31

설정

트랙백

댓글