gcc warning case 정리
[-Waddress]
주소 표현의 의심스러운 사용에 대한 경고.
void f (const char *x) {
if (x == "abc") // warning: expression evaluates to false
puts ("equal");
}
void g (void) {
if (!f) // warning: expression evaluates to false
abort ();
}
[-Wimplicit-function-declaration]
함수를 명시적으로 선언하지 않은 채 사용한 경우에 경고.
header include 누락, function declaration 누락 등.. 함수를 사용하기 전 명백하게 무엇인지 알려주지 않았다라는 의미.
[-Wparentheses]
특정 문맥에서 괄호가 생략되면 경고.
예를 들어 우선순위에 대해 사람들이 자주 혼동하는 연산자가 중첩되어 있는 경우 등.
*pImg[0] = *pImg[0] & *pMaskFont[0] | *pFont[0]; (X)
*pImg[0] = ((*pImg[0] & *pMaskFont[0]) | *pFont[0]); (O)
[-Wpointer-sign]
포인터 인수 전달 또는 부호가 다른 할당에 대한 경고.
expected 'unsigned char *' but argument is of type 'char *'
[-Wsequence-point]
시퀀스 포인트 규칙을 위반하여 정의되지 않은 의미를 가질 수 있는 코드에 대해 경고.
i++ * i++;
i = i++;
# i는 하나의 full expression(seqeunce point)에서 두번 값을 변경했다.
a[i] = i++;
# i가 subscript로 쓰이기 전에 증가할지, 쓰인 후 증가할지 알 수 없다.
[-Wsign-compare]
부호 있는 값과 부호 없는 값을 비교하여 잘못된 결과를 생성할 수 있는 경우 경고.
int a = 0;
unsigned int b = 1;
if( a < b ) ..
[-Wtype-limits]
제한된 범위의 데이터 유형으로 인해 비교가 항상 참 또는 항상 거짓 인 경우 경고.
부호 없는 변수가 0 또는 < 또는 >=과 비교되면 경고.
char arr_data[100000];
for( uint16_t idx = 0; idx < sizeof(arr_data) ; idx++ ) ..
# idx의 range는 65535, arr_data의 size인 100000에 닿을 수 없기 때문에 무한 루프 발생..
[-Wunused-but-set-variable]
변수를 선언하고 할당하였지만 사용하지 않는 경우 경고.
[-Wunused-function]
함수가 선언되었지만 사용하지 않는 경우 경고.
[-Wunused-parameter]
함수의 매개변수(인자)가 선언되었지만 사용하지 않는 경우 경고.
[-Wunused-variable]
지역/정적 변수를 선언하였으나 사용하지 않는 경우 경고.
(참고: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html)
* in definition of macro / in expansion of macro
의미를 정확히 이해하기 어렵다.
macro function 내 warning이 발생한 경우 해당 macro에 대한 note noti를 주는 것으로 생각된다..
해당 note에 대한 debuging이 필요 없다면 gcc의 -fcompare-debug-second 옵션을 통해 note 알림을 끌 수 있다.
(참고: compiling - Want to turn off "note" level messages in GCC - Unix & Linux Stack Exchange)
'IT > linux' 카테고리의 다른 글
Bogomips 개요, 측정 방법 (0) | 2022.09.09 |
---|---|
바이너리 동적 라이브러리 링크 확인, Dynamic linker (1) | 2022.09.07 |
ClearCase 개요와 활용 (0) | 2022.09.05 |
ctags 지원 언어 목록 / list-language, list-map, languages (0) | 2022.09.05 |
ctags 옵션 / recursive, only c, c++, exclude (0) | 2022.09.04 |
댓글