《gcc 5분 시리즈》 제13절: 컴파일러 최적화 옵션(4)―W
우수한 프로그래머는 어떤 Warning도 소홀히 해서는 안 된다.
우수한 프로그래머가 쓴 코드는 error가 없을 뿐만 아니라 Warning도 없다.
첫 번째 코드를 먼저 보십시오:
- //return-type.cpp
- int fun(){
- }
- int main(){
- fun();
- }
아주 간단하죠?
오류가 있습니까?사실은 없어요.
컴파일하기: g++ return-type.cpp.아무 문제 없어요.
그러나 사실상fun함수에return문장이 없으면 무작위 값을 되돌릴 수 있습니다. 이런 무시는 심각한 오류를 초래할 수 있습니다.
우리는 gcc가 이런 문제를 만났을 때 우리에게 힌트를 줄 수 있기를 바란다.
다행히 gcc에서 - W 옵션을 제공했습니다.
다음과 같은 명령을 사용하여 컴파일합니다.
g++ -Wreturn-type return-type.cpp
이것은 여전히 정상적으로 컴파일되고 실행 가능한 파일을 생성할 수 있지만, Warning 한 마디를 출력합니다.
return-type.cpp: In function ‘int fun()’:
return-type.cpp:3:1: warning: no return statement in function returning non-void
괜찮죠?
설명해 주세요. - W는 경고 출력을 열고 뒤에 경고를 받는 종류입니다.gcc는 경고를 여러 종류로 나눈다.return-type은 반환값 형식만 검사합니다.
하나 더:
- //uninitialized.cpp
- int fun(){
- int a;
- return a;
- }
- int main(){
- fun();
- }
정상적인 방식으로 컴파일하기: g++ uninitialized.cpp.아무 문제 없어요.
Unininitialized 종류의 경고를 열고 다음과 같이 컴파일합니다.
g++ -Wuninitialized uninitialized.cpp
출력된 Warning은 다음과 같습니다.
uninitialized.cpp: In function ‘int fun()’:
uninitialized.cpp:4:12: warning: ‘a’ is used uninitialized in this function
그런데 종류가 그렇게 많은데 하나씩 추가하는 게 귀찮지 않을까요?
하하!gcc의 - W 옵션에는 all라는 종류가 있습니다.무슨 뜻일까요?모든 종류의 경고를 엽니다.편하죠?
이 절이 끝나다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
execl 컴파일 시 경고:warning: not enough variable arguments to fit a sentinel 설명 (전재)warning: missing sentinel in function call warning: not enough variable arguments to fit a sentinel Sentinels & warnings...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.