g ++에서 -pedantic 플래그를 사용할지 여부


16

나는 C ++을 배우고 있으며 Linux에서는 연습을 위해 g ++을 사용하고 있습니다.

  1. 프로그래머로 일하는 사람들이 g ++ -pedantic flag와 실제 세계에서 그 중요성을 사용하는지 알고 싶습니다.

  2. 다른 컴파일러는 어떻습니까? 이것이 사실상의 표준이 되었습니까?

저자는 배열 정의에서 비 const 표현식을 차원으로 사용하는 것이 불법이며 기본적으로 g ++에서 허용하는 C ++ Primer를 읽고 있기 때문에 관심이 있습니다. 그리고 내가 모르는 다른 것들이있을 수 있습니다.



답변:


21

그렇습니다. 사실, 당신은 매뉴얼 페이지를 공부하고보다 더 많은 경고를 설정해야 -pedantic하고 -Wall할 것입니다.

아니요, 표준이 없습니다. MSVC는 /W4예를 들어 사용 합니다.


7
+1, 나는 보통 -Wall -Wextra -Werror -pedantic -std=c++0x:)
greyfade

4
@JaredBurrows : 실제로 -pedanticGCC 매뉴얼은 C에만 해당된다는 것을 암시하기 때문에 C ++과 함께 사용 을 중단 -std=c++14했으며 새로운 프로젝트에서 사용하기 시작 했습니다.
greyfade

1
@greyfade 아, 나는 말했다 -Wall -Wextra -Werror -std=c++14:)
Jared Burrows

1
방금 경고가 아닌 오류를 발생시키는 -pedantic-errors를 발견했습니다.
Galik

6
@VillasV Well -Werror은 모든 경고를 오류로 바꿉니다 . 그러나 위반으로 -pedantic-errors만 오류가 발생합니다 Standard ICO C++.
Galik

10

C ++을 꽤 오랫동안 프로그래밍하지는 않았지만이 플래그를 사용하는 것이 좋습니다. 표준 준수 코드를 작성하는 데 도움이되며 모든 사람의 삶을 편하게 만들어줍니다. AFAIK, 대부분의 다른 컴파일러는 gcc / g ++ 확장을 지원하지 않습니다.

예를 들어, 원래 개발자가 비표준 컴파일러 확장 프로그램에 대해 코딩하기로 결정했기 때문에 코드를 컴파일 할 수 없을 때 싫어합니다.

나는 C / C ++로 작성된 많은 양의 리눅스 프로그램이 gcc / g ++ 이외의 것으로 컴파일되지 않을 것이라고 생각한다. 항상 표준을 준수하십시오.


2
마지막으로 다른 컴파일러를 사용해 보았을 때 다른 컴파일러 와 작동하는 비율은 20 % , gcc 확장에 따라 80 %에 달한다고 말했습니다 .
Jerry Coffin

6

개인적으로 사용합니다 :

-벽 -Wextra-그림자 -Weffc ++-와일드 앨리어싱 -ansi -pedantic -Werror

따라서 많은 경고를 설정하지만 모든 경고를 오류로 처리하는 것이 더 중요합니다 (대부분의 경고는 생각의 논리적 오류이므로).


2019 년에이 목록에 추가 하시겠습니까?
Ayxan

1
@Ayxan 모든 사람이 사용하는 것이 가장 좋습니다. 그러나 유용한 더 많은 것들이 있습니다. 그러나 설명서를 다시 가져 와서 유용한 지 확인해야합니다. -Wunreachable-code -Wno-long-long
Martin York

1
@Ayxan 프로파일 링 코드를 작성할 때 :-g -pg -fprofile-arcs -ftest-coverage
Martin York

1
@Ayxan 디버그 빌드시-g -O0
Martin York

1
@Ayxan 생산 코드를 작성할 때-O3
Martin York

1

-pedantic플래그 를 사용하는 것이 매우 중요합니다 .

나는 현재 표준에서는 다음과 비슷한 것을 사용하는 것이 좋습니다.

-std=c++17 -Wall -Wextra -Werror -Wpedantic -pedantic-errors

어디:

  • -std=c++172017 년에 출판 된 C ++ 표준의 개정을 준수하도록 지시합니다 . 여기에 대해 자세히 읽을 수 있습니다 .

  • -Wall 그것을 알려줍니다 :

    일부 사용자가 의심스럽고 매크로와 관련하여도 피하기 쉬운 (또는 경고를 방지하기 위해 수정하는) 구성, 즉 일부 경고 세트에 대한 모든 경고를 사용하십시오.

  • -Wextra 더 많은 경고를 활성화하도록 지시합니다.

  • -Werror 모든 경고를 오류로 만들도록 지시합니다.

  • -Wpedantic또는 그냥 -pedantic알려줍니다 :

    엄격한 ISO C 및 ISO C ++에서 요구하는 모든 경고를 발행하십시오. 금지 된 확장명을 사용하는 모든 프로그램과 ISO C 및 ISO C ++를 따르지 않는 일부 다른 프로그램은 거부하십시오.

  • -pedantic-errors 기본 표준 (-Wpedantic 참조)에 진단이 필요할 때마다 오류를 표시하도록 지시합니다.


이 세트는 일반적으로 초보자에게만 유용합니다. 각 경고는 오류가 발생할 가능성이 있으며 정상적인 사용에 대해서도 점진적으로 학습하기 때문입니다.

모든 경고 옵션은 여기 GNU / GCC 페이지 에 자세히 설명되어 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.