GCC의 모든 경고를 (문자 그대로) 켜는 방법은 무엇입니까?


194

말 그대로 GCC의 모든 경고 를 활성화하고 싶습니다 . (당신은 그것이 쉬울 것이라고 생각할 것입니다 ...)

  • 당신 -Wall은 트릭을 할지도 모른다고 생각 하지만, 아닙니다! 여전히 필요합니다 -Wextra.

  • 당신 -Wextra은 트릭을 할지도 모른다고 생각 하지만, 아닙니다! 여기에 나열된 모든 경고 (예 :) -Wshadow가이 기능으로 활성화 된 것은 아닙니다 . 그리고 나는이 목록이 포괄적인지 전혀 모른다.

GCC에 모든 경고 를 사용하도록 설정하려면 어떻게해야 합니까?


27
@ Arafangion : 질문에 대해 "불분명 한"것이 무엇인지 이해하지 못합니다. 예, 아무리 사소한 것이더라도 내 코드에 적용되는 모든 경고 를 켜고 싶습니다 . 이유는 매우 간단합니다. -Wall 또는 -Wextra에서 설정하지 않은 경고 중 일부가 도움이되는 것으로 나타 났으므로 나머지 코드를 사용하여 코드를 개선 할 수 있는지 확인하고 싶습니다. 그렇게 간단합니다.
user541686

12
@JoachimPileborg : "컴파일러가 경고하는 것은 무엇입니까?" 잠재적 오류 및 / 또는 나쁜 스타일? 나는 모든 정확한 경고를 알고 있다면 수동으로 경고를 설정했을 것이므로 질문을 제기 할 필요가 없습니다. 답변이 실제로 "모든 소스를 찾으려면 소스 코드를 봐야"하는 경우 답변으로 게시하십시오!
user541686

56
clang 3.1 제공합니다 -Weverything.
Alexandre Hamez

5
@Arafangion 글쎄, 질문은 C ++ so ... :) 태그입니다.
일부 프로그래머 친구

5
@JoachimPileborg 그리고 이제 소스에서 경고를 추출하는 자동화 된 방법이 있습니다 : github.com/barro/compiler-warnings
Kyle Strand

답변:


130

당신은 할 수 없습니다.

GCC 4.4.0 매뉴얼은 해당 버전에 대해서만 포괄적이지만 4.4.0에 대한 가능한 모든 경고를 나열합니다. 예를 들어 일부 언어 별 옵션은 C ++ 옵션 또는 Obj-C 옵션 페이지에 있습니다. 옵션 요약을 살펴 보는 것이 좋습니다.

켜기 모든 것을 포함 할 것입니다 -Wdouble-promotion32 비트 단 정밀도 부동 소수점 유닛을 구현하는 CPU에만 관련되는 float하드웨어, 그러나 에뮬레이션 double소프트웨어입니다. double소프트웨어 에뮬레이션을 사용할 때 와 같이 계산을 수행하면 속도가 느려집니다. 이는 일부 임베디드 CPU와 관련이 있지만 64 비트 부동 소수점에 대한 하드웨어 지원 기능이있는 최신 데스크탑 CPU와는 전혀 관련이 없습니다.

일반적으로 유용하지 않은 또 다른 경고는이며 -Wtraditional, 이는 전통적인 C (예 : "string " "concatenation"ISO C 함수 정의 )에서 다른 의미를 갖거나 작동하지 않는 완벽하게 구성된 코드에 대해 경고 합니다! 30 년 된 컴파일러와의 호환성에 정말로 관심이 있습니까? 글쓰기에 대한 경고를 정말로 원하십니까 int inc(int i) { return i+1; }?

나는 -Weffc++너무 시끄러워서 쓸모가 없다고 생각 합니다. 구식 C ++ 의 오래된 첫 번째 버전을 기반으로하며 완벽하게 유효한 C ++ 인 구조체에 대해 경고합니다 (이 책의 이후 버전에서 지침이 변경됨). std::string생성자에서 멤버를 초기화하지 않았다고 경고했다 . 그것은 내가 원하는 것을 정확하게하는 기본 생성자를 가지고 있습니다. 왜 m_str()그것을 호출하기 위해 작성해야 합니까? -Weffc++도움이 될 것입니다 경고는 컴파일러가 정확하게 (위음성을 제공) 감지하기 너무 어려운, 그러한 명시 적으로 모든 멤버를 초기화하는 등의 유용하지 않은 사람은 단지 잘못된 반응을 제공, 많은 소음이 너무 생산하고 있습니다.

Luc Danton 은 C ++ 코드에는 거의 이해가되지 않는 쓸모없는 경고 의 훌륭한 예 를 제공했습니다 -Waggregate-return.

즉, 당신은 정말로 모든 경고를 원하지는 않습니다 .

매뉴얼을 살펴보고, 그들에 대해 읽고, 어떤 것을 가능하게 할 것인지 결정하고 시도하십시오. 어쨌든 컴파일러 매뉴얼을 읽는 것은 Good Thing TM 이며, 지름길을 이해하고 알지 못하는 경고를 활성화하는 것은 특히 좋은 생각이 아닙니다. 특히 RTFM을 피해야하는 경우에는 그렇습니다.

방금 모든 것을 켜는 사람 은 아마 단서가 없기 때문에 그렇게하고 있거나 머리가 뾰족한 상사가 "경고 없음"이라고 말했습니다.

일부 경고는 중요하지만 일부 경고는 중요하지 않습니다. 차별적이거나 프로그램을 망쳐 놓아야합니다. 예를 들어을 고려하십시오 -Wdouble-promotion. 임베디드 시스템에서 작업하는 경우이를 원할 수 있습니다. 데스크탑 시스템에서 작업하고 있다면 아마 그렇지 않을 것입니다. 그리고 당신은 -Wtraditional원합니까? 나는 그것을 의심한다.

편집 : WONTFIX로 닫히는 모든 경고를 활성화하려면 -Wall-all 도 참조하십시오 .

편집 2 : 컴파일러 버전에 따라 다른 경고를 사용해야하는 makefile에 대한 DevSolar의 불만에 대한 응답으로 -Wall -Wextra적합하지 않은 경우 컴파일러 별 및 버전 별 CFLAGS를 사용하는 것이 어렵지 않습니다.

compiler_name := $(notdir $(CC))
ifeq ($(compiler_name),gcc)
compiler_version := $(basename $(shell $(CC) -dumpversion))
endif
ifeq ($(compile_name),clang)
compiler_version := $(shell $(CC) --version | awk 'NR==1{print $$3}')
endif
# ...
wflags.gcc.base := -Wall -Wextra
wflags.gcc.4.7 := -Wzero-as-null-pointer-constant
wflags.gcc.4.8 := $(wflags.gcc.4.7)
wflags.clang.base := -Wall -Wextra
wflags.clang.3.2 := -Weverything
CFLAGS += $(wflags.$(compiler_name).base) $(wflags.$(compiler_name).$(compiler_version))

38
"매뉴얼을 살펴보고, 그들에 대해 읽고, 어떤 것을 사용하고 싶은지 결정하고 시도하십시오." "각 컴파일러 버전마다 매뉴얼을 다시 방문하고 변경 사항이 있으므로 경고 목록을 수정하십시오. Makefile이 정확한 컴파일러 버전을 확인하고 다른 경고 목록을 사용하도록 하십시오. "그들 각각을 위해." 우리는 유지 관리자가 유지 보수하는 최적화 수준을 가지고 있습니다. 왜 동일한 경고 서비스를 제공하는 데 어려움을 겪을 수 없었습니까?
DevSolar

17
@JonathanWakely : 내가 가진 프로젝트를하고, GCC는 그들 가운데 없습니다. 나는 그들의 제품의 약점을 지적합니다. 그들은 그것을 고치거나 그렇지 않은 비난을 받아들이지 만, 그것을 고쳐야하는 것은 나에게 달려 있지 않습니다 .OSS는 저주받습니다.
DevSolar

14
@JonathanWakely : "무엇을 원하면 물어보고, 그것에 대해 망설이지 마십시오." -특히 # 31573이 이미 WONTFIX로 표시되어 있지 않은 경우 GCC 프로젝트에 참여할 의무는 없습니다. 그것은 "그에 관한 질문"에서 "이것에 관한 나쁜"야구장으로이 주제를 넣습니다.
DevSolar

61
-Weverything그런 옵션을 제공하지 않는 gcc 전략보다 더 나은 솔루션이라고 생각합니다. 필자는 철학에 따라 모든 경고를 기본적으로 설정하고 (다른 사람이 컴파일러에 추가 할 수 있다고 생각했기 때문에) 경고가 마음에 들지 않기 때문에이 플래그를 clang과 함께 사용합니다. 요점은 트리거하지 않는 경고에 대해서는 모르지만 트리거하지 않으려는 경고에 대해서는 알고 있으며 쉽게 해제된다는 것입니다.
David Stone

17
@JonathanWakely 그래,하지만 멍청이야. 경고는 무엇을 볼 수있는 가장 쉬운 방법 수있는 코드와 관련이되는 경고 보는 것입니다 트리거 코드; 이 시점에서 경고를 비활성화할지 여부를 결정하기 전에 잠재적으로 위험한 코드의 실제 사례를 볼 수 있습니다. 이것은 Clang의 -Weverything옵션 으로 쉽게 수행 할 수 있지만 GCC로는 불가능합니다.
Kyle Strand

71

문자 그대로 모든 경고를 활성화하는 것이 유리하지 않을 수도 있다는 이전 답변에 동의하지만 GCC는이를 달성하기 위해 합리적으로 편리한 방법을 제공합니다. 명령

gcc -Q --help=warning

지원되는 모든 경고 옵션 목록이 활성화되어 있는지 여부에 대한 정보를 제공합니다. 그런데이 캔이 옵션은 예를 들어으로 활성화 (안)되는 찾을 수 -Wall-Wextra

gcc -Wall -Wextra -Q --help=warning

모든 경고를 활성화하려면 일부 정규식을 사용하여 명령 줄 매개 변수를 추출 할 수 있습니다

gcc -Q --help=warning | sed -e 's/^\s*\(\-\S*\)\s*\[\w*\]/\1 /gp;d' | tr -d '\n'

내 현재 GCC의 경우 다음을 제공합니다.

-Wabi -Wabi-tag -Waddress -Waggregate-return -Waggressive-loop-optimizations -Waliasing -Waligns commons -Warmersand -Warray-bounds -Warray-temporaries -Wassign-intercept -Wattributes -Wbad-function-cast -Wolol-compare 비교 -Wbuiltin-macro-redefined -Wc ++-compat -Wc ++ 0x-compat -Wc ++ 14-compat -Wc-binding-type -Wc90-c99-compat -Wc99-c11-compat -Wcast-align -Wcast-qual -Wchar- 첨자-문자 잘림 -Wchkp-클러 버드 -Wcomment -Wcompare-reals-조건부 지원 -Wconversion -Wconversion-extra -Wconversion-null -Wcoverage-mmatch -Wcpp -Wctor-dtor-privacy-날짜-시간 -Wreclaration -After-statement -Wdelete-incomplete -Wdelete-non-virtual-dtor -Wdeprecated -Wdeprecated-declarations -Wdesignated-init -Wdisabled-optimization -Wdiscarded-array-qualifiers -Wdiscarded-qualifiers -0으로 나누기 -Wdouble-promotion -Weffc ++-빈 바디-Wendif-labels -Wenum-comare -Wextra -Wfloat-equal -Wformat-null -Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-signedness -Wformat-y2k -Wformat-zero-length -Wfree -비 힙 객체-함수 제거-유효 한정자-명시 적-임시적 기능 선언-임시적 -int-임시적 인터페이스-명시 적 절차 -Wincompatible- 포인터 유형-가변 변수 -ctor-초기 자체 -Winline -Wint-conversion -Wint-to-pointer-cast -Wintrinsic-shadow -Wintrinsics-std -Wrongs-memory-model-Winvalid-pch -Wjump-misses-init -Wline-truncation -Wliteral-suffix -Wlogical -괄호 없음-논리적-길이-긴-주-어쩌면 초기화되지 않은 -Wmmset-transposed-args-방사선 괄호-방사선 선언-방사선 필드 초기화 장치-방사선 포함 디렉토리-방사선 매개 변수 유형 -방사형 프로토 타입-Wmultichar-좁게 -Wnested-externs -Wonexcept -non-template-friend -Won-virtual-dtor -Wonnull -Wodr -Wold-style-cast -Wold-style-declaration -Wold-style-definition -Wopenmp-simd -Woverflow -길이-문자열-오버로드 된 가상 -Woverride-init -Wpacked -Wpacked-bitfield-compat-패딩 된-필드-복합 -Wpededic -Wpmf- 변환 -Wpointer-arith-포인터 부호 -Wpointer-to-int-cast-Wpragmas -Wproperty -assign-default -Wprotocol -Wreal-q-constant -Wrealloc-lhs -Wrealloc-lhs-all -Wredundant-decls -Wreorder -Wreturn-local-addr -Wreturn-type -Wselector -Wsequence-point -Wshadow -Wshadow-ivar -Wshift-count-negative -Wshift-count-overflow -Wsign-comare -Wsign-promo -Wsized-deallocation -Warf-array-argument-Wsizeof-pointer-memaccess -Wstack-protector-엄격한 널 센티널-엄격한 프로토 타입 엄격한 선택기 일치-Wsuggest-attribute = const -Wsuggest-attribute = format -Wsuggest-attribute = noreturn -Wsuggest-attribute = pure -Wsuggest-final-methods -Wsuggest-final-types -Wsuggest-override -Wsurprising -Wswitch -Wswitch- 바로 전환 스위치 -default -Wswitch-enum -Wsync-nand -Wsynth -Wsystem-headers -Wtabs -Wtarget-lifetime -Wtraditional -Wtraditional-Conversion -Wtrampolines -Wtrigraphs -Wtype-limits -Wundeclared-selector -Wundef -Wunderflow-미 초기화-알 수없는-프 래그 마 -Wunsafe-loop-optimizations -Wunsuffixed-float-constants -Wunused -Wunused-but-set-parameters -사용 된 매크로-사용 된 매개 변수-사용 된 결과-사용 된 값-사용되지 않는 변수-사용하지 않고 전용-사용할 수없는 캐스트 -Wvarargs-변색 성 매크로 -Wvector-operation-performance -Wvirtual-move-assign-Wvla -Wvolatile-register-var -Wwrite-strings -Null 포인터로 상수 상수 -Wzerotrip -frequire-return-statement

이제 GCC를 호출하는 데 사용할 수 있습니다.

gcc $(gcc -Q --help=warning | sed -e 's/^\s*\(\-\S*\)\s*\[\w*\]/\1 /gp;d' | tr -d '\n')

그러나 특정 언어 (예 :)에서만 사용할 수있는 일부 경고 옵션으로 인해 경고가 발생합니다 C++. 이것들은 더 많은 정규 표현식을 사용하여 현재 언어에 허용되는 옵션 만 포함하거나 -Wno-whatever호출 끝에 적절한 것을 추가하여 피할 수 있습니다 .


10
실용적이지 않아서 두렵습니다. Gcc는 std lib에서 경고를 표시했습니다.
Valentin Heinitz

13
@ValentinHeinitz 말했듯이 문자 그대로 모든 경고를 활성화하는 것이 유익하지 않다고 생각하지만 OP가 요청한 것입니다. 그러나 다른 답변에서 이미 언급 한 문제가있는 경고를 명시 적으로 제거하여 (예 : 통화 끝에 -Wno-what 추가) 실제로 사용할 수 있다고 생각합니다.
Haatschii

6
@ValentinHeinitz 관련 디렉토리 -isystem대신 사용하여 gcc가 시스템 / 표준 / 타사 헤더에 대해 경고를 발행하지 못하게 할 수 있습니다 -I.
Kyle Strand

4
이것은 실제로 직접 질문에 대답하기 때문에 허용되는 답변이어야합니다.
TFuto

16

모든 경고를 활성화하여 프로그래밍하는 것은 불가능합니다 (경고를 무시하지 않는 한 왜 귀찮게합니까?). 예를 들어 다음과 같은 플래그 집합을 사용한다고 가정 해 봅시다 -Wstrict-prototypes -Wtraditional.

두 개의 경고가 활성화되어 있어도 다음 프로그램이 불평합니다.

/tmp $ cat main.c 
int main(int argc, char **argv) {
    return 0;
}
/tmp $ gcc -Wstrict-prototypes -Wtraditional main.c 
main.c: In function main’:
main.c:1:5: warning: traditional C rejects ISO C style function definitions [-Wtraditional]
 int main(int argc, char **argv) {
     ^

당신은 "글쎄, 그때는 구식 프로토 타입을 사용할 것"이라고 생각할 것입니다. 아니요, 작동하지 않습니다.

/tmp $ cat main.c 
int main(argc, argv)
    int argc;
    char **argv;
{
    return 0;
}
/tmp $ gcc -Wstrict-prototypes -Wtraditional main.c 
main.c:1:5: warning: function declaration isnt a prototype [-Wstrict-prototypes]
 int main(argc, argv)
     ^

그리고 컴파일러도 불평 할 것이기 때문에 프로토 타입을 지정하지 않는 것도 잘못된 것입니다.

/tmp $ cat main.c 
int main() {
    return 0;
}
/tmp $ gcc -Wstrict-prototypes -Wtraditional main.c 
main.c:1:5: warning: function declaration isnt a prototype [-Wstrict-prototypes]
 int main() {
     ^

프로그램 내에서 함수를 정의하면 컴파일러가 상상할 수있는 함수 정의에 대해 불평하기 때문에 모든 플래그를 사용할 수 없습니다.

C ++의 경우 이것이 가능하며 ( -Wtraditional플래그가 존재하지 않음) 매우 간단한 프로그램을 컴파일 할 수 있습니다. 모든 경고를 활성화하려면 다음 경고 목록을 사용하십시오. 아마에서 활성화 된 경고를 필터링하지 않기 때문에 일부 경고가 중복되었을 수 -Wall있습니다.

-Wabi -Wctor-dtor-privacy -Wnon-virtual-dtor -Wreorder -Weffc++ -Wstrict-null-sentinel -Wno-non-template-friend -Wold-style-cast -Woverloaded-virtual -Wno-pmf-conversions -Wsign-promo -Wextra -Wall -Waddress -Waggregate-return -Warray-bounds -Wno-attributes -Wno-builtin-macro-redefined -Wc++0x-compat -Wcast-align -Wcast-qual -Wchar-subscripts -Wclobbered -Wcomment -Wconversion -Wcoverage-mismatch -Wno-deprecated -Wno-deprecated-declarations -Wdisabled-optimization -Wno-div-by-zero -Wempty-body -Wenum-compare -Wno-endif-labels -Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 -Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wignored-qualifiers -Winit-self -Winline -Wno-int-to-pointer-cast -Wno-invalid-offsetof -Winvalid-pch -Wunsafe-loop-optimizations -Wlogical-op -Wlong-long -Wmain -Wmissing-braces -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-include-dirs -Wmissing-noreturn -Wno-mudflap -Wno-multichar -Wnonnull -Wno-overflow -Woverlength-strings -Wpacked -Wpacked-bitfield-compat -Wpadded -Wparentheses -Wpointer-arith -Wredundant-decls -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wsign-conversion -Wstack-protector -Wstrict-aliasing=1 -Wstrict-overflow=5 -Wswitch -Wswitch-default -Wswitch-enum -Wsync-nand -Wsystem-headers -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized -Wunknown-pragmas -Wno-pragmas -Wunreachable-code -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wvariadic-macros -Wvla -Wvolatile-register-var -Wwrite-strings

13
나는 지금까지 이것을 확인하기 위해 귀찮게하지 않았지만 실제로 불가능하지는 않습니다 ... 시도int main(int, char **); int main(argc, argv) int argc; char **argv; { (void)argc; (void)argv; return 0; }
user541686

2
이 사소한 프로그램을 사용해도 "경고 : 스택 사용량은 16 바이트입니다. [-Wstack-usage =]";-)
Marc Glisse

7

특정 GCC 또는 Clang 버전에 대한 전체 경고 세트 를 결정하기위한 도구 세트를 작성했습니다 .

GCC의 경우 컴파일러 버전에 대해이 도구에서 제공하는 전체 경고 목록에서 복사하는 것이 Clang과 달리 GCC가 제공하지 않기 때문에 모든 경고가 설정 되도록하는 유일한 방법 인 것으로 보입니다 .-Weverything

이 도구 c.opt는 GCC 소스 코드에서 실제 파일 을 구문 분석하는 것처럼 보이 므로 결과 명확 해야 합니다.

저장소에는 대부분의 GCC 및 Clang 버전 (현재 Clang 3.2-3.7 및 GCC 3.4-5.3)에 대해 생성 된 경고 목록이있는 텍스트 파일도 포함되어 있습니다.

https://github.com/barro/compiler-warnings


이것이 답입니다. "최상위 레벨"목록을 사용하고 최상위 레벨에있는 모든 인수 (들여 쓰기 / 중지되지 않음)를 추가하십시오. github.com/Barro/compiler-warnings/blob/master/gcc/…
Jetski S- 타입

6

Gcc 4.3+에는 이제 -Q --help = warnings가 있으며 --help = warnings, C를 지정하여 C 관련 경고를 인쇄 할 수도 있습니다.

방금 이것을 활용하기 위해 m4 모듈을 작성했습니다 (clang의 -Weverything도 지원합니다). wget_manywarnings를 참조하십시오 .

사용 방법은 매우 간단합니다. 기본적으로 모듈은 모든 경고 플래그를 켭니다. 그리고 필요에 따라 경고를 제거합니다. 일부는 실제로 매우 장황합니다. 예 : configure.ac

autotools를 사용하지 않으면 m4 모듈에서 비활성화 된 모든 경고를 설정하는 코드를 찾을 수 있습니다. 이는 기본적으로 awk를 통해 파이프 된 gcc 호출입니다.

flags="-Wall -Wextra -Wformat=2 "$(gcc -Wall -Wextra -Wformat=2 -Q --help=warning,C|awk '{ if (($2 == "[disabled]" || $2 == "") && $1!~/=/ && $1~/^-W/&& $1!="-Wall") print $1 }'


3

에서 이 페이지 :

일부 경고 플래그는에 의해 암시되지 않습니다 -Wall. 그들 중 일부는 사용자가 일반적으로 의심하지 않는 구조에 대해 경고하지만 때로는 확인하고 싶을 수도 있습니다. 어떤 경우에는 피하거나 피하기 어려운 구조에 대해 경고하고 경고를 억제하기 위해 코드를 수정하는 간단한 방법은 없습니다. 그들 중 일부는 활성화되어 -Wextra있지만 대부분은 개별적으로 활성화해야합니다.

질문은 어떤 것 같아요 ? 아마도 -W로 시작하는 모든 줄에 대해 해당 페이지를 grep 하고 경고 플래그의 전체 목록을 얻을 수 있습니다. 그런 다음 -Wall및 아래의 목록과 비교하십시오 -Wextra. -Wpedantic당신은 분명히 훨씬 더 pedantic되고 싶어하지만, 또한 있다 =)


"그리고 나는이 목록이 종합적인지 여전히 모른다" ... 네, 확실히 그 페이지를 잡을 수는 있지만, 문제는 포괄적입니까?
user541686

1
모르겠다 ... GCC 소스 코드를 따라야 할 수도있다. 프로그래머로서의 삶을 매우 어렵게 만들려고합니까, 아니면 가능한 모든 경고를보고 싶은 이유가 있습니까? =)
pady

2
GCC의 코드 진단을보고 싶습니다. 실제로 도움이됩니다. 그러나 분명히 모든 경고에 대해 이미 알고 있고 어떤 경고가 유용하고 어떤 것이 유용하지 않은지 묻는다면 아무 것도 묻지 않았을 것입니다. 내가 시도하지 않으면 말할 수있는 실제 방법은 없습니다 (예 : 그림자가 도움이되는 것을 발견했기 때문에 전원이 꺼져서 쓸모없는 것처럼 보이지 않습니다).
user541686

3

그리고 나는이 목록이 포괄적인지 전혀 모른다.

아마도 100 % 포괄적 인 유일한 목록은 컴파일러의 실제 소스입니다. 그러나 GCC는 크다 ! 그리고 모든 명령 줄 매개 변수가 한곳에서 수집되는지 또는 여러 소스 파일로 퍼져 있는지 여부는 알 수 없습니다. 또한 일부 경고는 전 처리기, 일부는 실제 컴파일러 및 일부는 링커 (완전히 별도의 프로그램이며 binutils 패키지에 있음)에 대한 경고이므로 대부분 확산 될 가능성이 있습니다.


3
내 답변 의 옵션 요약 페이지에 연결하여 모든 옵션을 한 페이지로 그룹화했습니다. GCC 코드 검토 정책은 문서화없이 새로운 옵션을 허용하지 않으므로 문서는 포괄적이어야합니다.
Jonathan Wakely
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.