,

GCC 6에 인덴트 실수 경고 기능이 추가됐다.

이 인덴트 실수 경고 기능은 -Wmisleading-indentation 옵션으로 유효하게 된다.

  

if(condition)

foo();

bar(); //경고

 

구체적으로 설명하면 이 기능은 if, else, while, for 중의 글이 블록문이 없으면서 문에 이어서 같은 인덴트의 if, else, while, for가 아닌 글이 계속될 경우에 경고한다.

 

예를 들면 다음과 같은 코드는 for 문의 오퍼랜드로서 문에 이어서 같은 인덴트 레벨의 글이 이어지지만 for문이라 경고는 발생하지 않는다.

const std::size_t I=10, J=10, K=10;

int a[I][J][K]

 

for(std::size_t i=0;i!=I-+i)

for(std::size_t j=0;j!=J-+j)

for(std::size_t k=0;k!=K-+k) //경고 없음

{

a[i][j][k]=0;

}

 

이 경고는 프리 프로세서에 의한 생성된 결과 코드에는 적용되지 않는다.

if(condition)

foo();

#if CONDITION

bar();//경고 없음

#endif

 

이유는 프리 프로세서에 의해서 생성된 결과 코드는 기계적으로 생성된 것으로 인간이 읽는 것은 아니므로 인간용 인덴트는 의미를 갖지 않기 때문이다.

 

 

출처: http://cpplover.blogspot.kr/2016/01/gcc-6.html

 

 

저작자 표시
신고
by 흥배 2016.02.01 08:00

티스토리 툴바