compiling

오류에 대한 메모를 표시하는 g++를 비활성화하는 방법

컴파일할 때 오류에는 종종 긴 일련의 음표(청록색)가 수반됩니다. 이것을 비활성화하고 오류 자체만 표시하는 g++ 플래그가 있습니까?

컴파일러는 이 작업을 수행하지 않지만 (지금까지...) 컴파일러 개발자는 error: 또는 warning: 를 사용하여 첫 번째 줄에 필수 정보를 제공하는 다른 컴파일러에서 채택된 오랜(30년 이상) 규칙을 따르고 있습니다. 경고를 표시합니다. grep stderr 을 사용하면 최소한의 경고/오류 정보를 볼 수 있습니다.

grep은 좋은 출발점입니다("grep -n" 출력은 그 자체로 유용합니다). 이러한 메시지는 여러 도구에 공통적인 파일 이름, 줄 번호, 메시지 패턴을 따릅니다. 나는 vi-like-emacs 여기 에서 그것을 사용했습니다 .

상당히 최근에(2014년) gcc/g++는 메시지에 "호출 스택"을 추가하기 시작하여 추가 정보를 제공합니다. -P 옵션 으로 끌 수 있는 라인 번호를 추적하기 위한 전처리기의 변경에 의존 하지만( 여기 에 언급됨) 호출 스택을 억제하는 형식에 불완전하게 통합된 것으로 보입니다.

clang을 사용하는 것은 이것에 별로 도움이 되지 않습니다. 매우 장황할 수도 있습니다. gcc/g++ 개발은 여기 에 언급된 많은 메시지를 추가했습니다 .




컴파일할 때 오류는 종종 긴 추적(청록색)을 동반합니다. 이것을 비활성화하고 오류 자체만 표시 하는 g++ 플래그가 있습니까?

  • STLFilt 와 같이 더 이상 지원되지 않는 이전 도구를 사용할 수 있습니다 .

  • Clang 으로 전환 하거나 오류만 보고하고 GNU g++ 에서 최종 컴파일을 수행하는 데 사용할 수 있습니다 .

  • STL에 익숙해지면 해독이 더 쉬워집니다.

    STL과 사용 방법을 잘 이해하면 처음부터 많은 오류를 피하는 데 도움이 됩니다. 둘째, 종종 오류 메시지는 STL 소스의 기능을 참조합니다. STL이 어떻게 구현되는지 대략적인 아이디어가 있는 경우 오류 메시지가 무엇인지 해독하는 데 매우 도움이 될 수 있습니다. 최신 버전의 g++ 컴파일러는 때때로 출력을 개선하여 더 유용하고 덜 장황하게 만듭니다.

정확히 원하는 것은 아니지만 출력을 줄일 수 있습니다.

  • -fmax-errors 플래그 또는 -Wfatal-errors 옵션을 사용합니다 .

    -fmax-errors=n

    최대 오류 메시지 수를 n으로 제한합니다. 이 지점에서 GCC는 소스 코드 처리를 계속 시도하지 않고 구제합니다. n이 0(기본값)이면 생성되는 오류 메시지 수에 제한이 없습니다. -Wfatal-errors 도 지정 하면 -Wfatal- errors 가 이 옵션보다 우선합니다.

    -Wfatal-errors

    이 옵션을 사용하면 컴파일러는 계속 진행하여 추가 오류 메시지를 인쇄하지 않고 발생한 첫 번째 오류에서 컴파일을 중단합니다.