“g ++ -Wall test.cpp -o test”의“-Wall”은 무엇을합니까?
-o 출력 파일 이름을 변경합니다 (--help를 사용하여 발견했습니다)
그러나 나는 무엇을 알 -Wall
수 없습니까?
"warn all"의 줄임말입니다. g ++가 알려줄 수있는 (거의) 모든 경고를 켭니다. 일반적으로 특히 초보자 인 경우 좋은 생각입니다. 이러한 경고를 이해하고 수정하면 코드에서 다양한 종류의 문제를 해결하는 데 도움이 될 수 있기 때문입니다.
man gcc를 참조하십시오.
-Wall 은 다음 경고를 켭니다.
-Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts
-Wenum-compare (in C/Objc; this is on by default in C++) -Wimplicit-int (C and
Objective-C only) -Wimplicit-function-declaration (C and Objective-C only)
-Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding)
-Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type
-Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing
-Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized -Wunknown-pragmas
-Wunused-function -Wunused-label -Wunused-value -Wunused-variable
-Wvolatile-register-var
-Wextra 는 다음을 포함합니다 :
-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init
-Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter (only with -Wunused
or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)
명시 적으로 켜야하는 더 많은 경고가 있습니다.
예를 들어 C 코드의 경우 다음을 사용합니다.
-Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wdisabled-optimization -Wdiv-by-zero -Wendif-labels -Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline -Winvalid-pch -Wjump-misses-init -Wlogical-op -Werror = missing-braces -Wmissing-declarations -Wno-missing-format-attribute -Wmissing-include-dirs -Wmultichar -Wpacked -Wpointer-arith -Wreturn-type -Wsequence-point -Wsign-compare -Wstrict-aliasing -Wstrict-aliasing = 2 -Wswitch -Wswitch-default -Werror = undef -Wno-unused -Wvariadic-macros -Wwrite-strings -Wc ++ -compat -Werror = 문 후 선언 -Werror = 암시 적 기능 선언 -Wmissing-prototypes -Werror = nested-externs -Werror = old-style-definition -Werror = strict-prototypes
또는 https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html을 사용하는 경고 세트
안타깝게도 매뉴얼의 실제 관련 부분을 인용하는 답변은 없습니다.
이를 통해 일부 사용자가 의심스럽고 피하기 쉬운 (또는 경고를 방지하기 위해 수정하기 위해 수정하는) 구성에 대한 모든 경고를 매크로와 함께 사용할 수 있습니다.
[...]
일부 경고 플래그는에 의해 암시되지 않습니다
-Wall
. 그들 중 일부는 사용자가 일반적으로 의심스럽지 않지만 때때로 확인하고 싶을 수도있는 구성에 대해 경고합니다. 어떤 경우에는 피해야하거나 피하기 어려운 구조에 대해 경고하는 경우도 있으며, 경고를 억제하기 위해 코드를 수정하는 간단한 방법이 없습니다. 이들 중 일부는에서 활성화-Wextra
되지만 대부분은 개별적으로 활성화되어야합니다.
에르고 :
-Wall
"모든 경고"를 의미 하지는 않습니다 .- 또한 않습니다 하지 아니라 장거리 슛으로 "모든 (거의)"을 의미한다.
- 그것은 않는 개별 옵션의 집합을 의미 변경할 수밖에 없다 .
결론적으로, 설정해야하는 경고의 절대 최소값입니다. -Wall -Wextra
더 나은 반면 , 컴파일러가 할 수있는 모든 오류 검사를 여전히 사용하지는 않습니다.
개인적으로 나는 -Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual
. 현재의 모든 프로젝트는 실제로 그보다 긴 경고 목록을 사용합니다 (아무것도 트리거하지 않음). 그리고 새로운 옵션에 대한 모든 주요 릴리스의 설명서를 확인합니다. 컴파일러는 당신의 친구입니다. 제공 할 수있는 모든 진단을 사용하십시오.
gcc 작성자가 소스에서 유용 하고 쉽게 피할 수있는 경고를 활성화합니다 . -W (최신 릴리스의 -Wextra)도 있습니다. 유용하다고 간주되지만 잘못된 긍정을 해결하는 것이 어렵거나 코드가 서투른 코드가 될 수 있습니다.
gcc에는 일반적으로 유용하지 않은 다른 경고도 많이 있습니다. 참조 http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options를
그것 enables most warning messages
.
을 사용하면 자세한 내용을 확인할 수 있습니다 g++ --help=warnings
.
모든 경고를 활성화합니다. ( "모두 경고"로 표시)
모든 경고를 표시합니다. -pedantic
코드의 일부 부적합한 부분에 대해 경고 할 때도 사용 하는 것이 좋습니다 .
참고 URL : https://stackoverflow.com/questions/2408038/what-does-wall-in-g-wall-test-cpp-o-test-do
'your programing' 카테고리의 다른 글
1d 배열이 예상되었을 때 열 벡터 y가 전달되었습니다. (0) | 2020.10.16 |
---|---|
왜 os.path.abspath와 os.path.realpath를 모두 사용합니까? (0) | 2020.10.16 |
git로 비 저장소 파일을 제거 하시겠습니까? (0) | 2020.10.16 |
C ++에서 void 포인터는 무엇입니까? (0) | 2020.10.16 |
Python의 산점도 및 색상 매핑 (0) | 2020.10.16 |