-Wunused-value
Warn whenever a statement computes a result that is explicitly not used.
To suppress this warning cast the expression to void.
-Wunused
All all the above -Wunused options combined.
In order to get a warning about an unused function parameter, you must either specify -W -Wunused or separately specify -Wunused-parameter.
gcc 메뉴얼에 따르면 -Wall 이면 parameter를 사용하지 않아도 경고를 내야할 것 같은데, -Wall 만으로는 경고가 발생하지 않는 것 같습니다.
샘플 코드를
% gcc -Wall -Wunused-parameter a.c
정도로 컴파일해서 (void)ignore; 줄을 빼 보고 컴파일 해 보시고,
(void)를 빼고 ignore; 만 넣고 컴파일을 해 보시면 경고메시지를
보실 수 있을 것입니다.
흠,, 근데 또 다른 컴파일러에서는 (void)ignore; 도 경고를 낼 수 있지 않을까 생각이 드는데요, 표준에는 이에 관련된 내용이 있는지, 있으면 어떻게 해석하도록 되어있는지 모르겠습니다.
제 추측으로는...
경고 메시지를 안 나오도록 할려고 한게 아닌가 생각됩니다.
좀 까다로운 컴파일러들은 (또는 주어진 경고 옵션에 따라)
함수의 파라메터가 함수 안에서 사용이 되지 않으면 경고를 출력합니다.
이 경고를 피하기 위해서
와 같이 해당 파라메터를 사용을 하면
해당 문장이 아무런 효과가 없다는 경고 메시지를 출력하기도 합니다.
ignore 앞에다가 (void)를 붙여주면 컴파일러에 따라 사용자의 의도를 헤아려서 해당 경고메시지를 안 내보내주기도 합니다.
gcc 홈페이지에서 가져왔습니다.
http://gcc.gnu.org/onlinedocs/gcc-3.2.2/gcc/Warning-Options.html#Warning%20Options
gcc 메뉴얼에 따르면 -Wall 이면 parameter를 사용하지 않아도 경고를 내야할 것 같은데, -Wall 만으로는 경고가 발생하지 않는 것 같습니다.
샘플 코드를
% gcc -Wall -Wunused-parameter a.c
정도로 컴파일해서 (void)ignore; 줄을 빼 보고 컴파일 해 보시고,
(void)를 빼고 ignore; 만 넣고 컴파일을 해 보시면 경고메시지를
보실 수 있을 것입니다.
흠,, 근데 또 다른 컴파일러에서는 (void)ignore; 도 경고를 낼 수 있지 않을까 생각이 드는데요, 표준에는 이에 관련된 내용이 있는지, 있으면 어떻게 해석하도록 되어있는지 모르겠습니다.
윗분 설명에 동감합니다.signal handler의 format
윗분 설명에 동감합니다.
signal handler의 format
void func( int )
은 맞추어야하겠고, 인자로 받는 signal은 사용안할 것이고,
그리고 -W 에서 확인되는 warning은 해결해주어야하겠고....
gcc의 경우 __attribute__ 설정을 다음과 같이 하는 방법으로 문제의 경고를 없앨 수 있습니다.
void func( int __attribute__((unused)) sig )
---
http://coolengineer.com
댓글 달기