첫 번째 오류 이후 C 또는 C ++ 컴파일 오류를 읽습니까?


19

C 및 C ++ 컴파일러가 오류를 복구하고 구문 분석을 계속 시도하는 이유를 이해하지 못했습니다. 거의 항상, 첫 번째 오류는 첫 번째 오류가 수정 되 자마자 사라지는 가짜 오류 스트림을 생성합니다. 수년간의 경험을 쌓은 후, 나는 모든 파일 중 첫 번째 파일을 제외한 모든 오류를 보는 것을 중단했습니다. 컴파일러를 다시 실행 한 다음 더 이상 오류가 없을 때까지 다시 수행합니다. 일반적인 관행입니까?


필자는 첫 번째 것만 읽은 것으로 생각하지만 수천만 개의 소스 파일 솔루션으로 작업하지 않으므로 도움이됩니다.
Coder

답변:


19

때때로 오류는 관련이 없습니다. 오류 목록을보고 일련의 관련 오류의 근본 원인을 수정 한 다음 관련 되지 않은 다음 오류를 수정하는 것이 더 쉽다는 것을 알았습니다 . 프로젝트가 크고 빌드하는 데 시간이 걸리면이 방법으로 작업하는 것이 첫 번째 오류를 수정하고 다시 컴파일하고 반복하는 것보다 덜 실망 스럽습니다 ...


3
+1 : 프로젝트가 크고 빌드하는 데 시간이 걸리는 경우 컴파일간에 너무 많이 변경하지 않으면 비교적 쉽게 도입 된 문제를 찾을 수 있습니다.
Donal Fellows

컴파일 시간이 너무 길면 관련없는 다른 오류를 찾는 것이 도움이 될 수 있지만 이러한 긴 증분 빌드를 유발하는 종속성 문제를 해결하는 것이
좋습니다

8

컴파일 시간에 따라 다릅니다 . 예를 들어 전체 프로젝트의 재 구축을 트리거하는 마스터 헤더를 변경했다는 사실을 알고 있다면 나머지 오류 스택을 자세히 살펴보고 일부를 수정할 수 있는지 확인할 것입니다. 컴파일러가 작동하는 동안 커피를 만들 때 일 어설 때 더 나은 느낌을줍니다.


4

예, 컴파일러를 사용하여 리팩토링하는 데 도움이되지 않는 한 동일한 작업을 수행합니다.이 경우 전체 오류 목록을 좋아합니다. :)


많은 최신 IDE에는 버튼 클릭 한 번으로 리팩토링 도구를 사용할 수 있으므로 이러한 도구를 사용하여 액세스하고 사용할 수있는 경우 컴파일러별로 리팩터링 오류가 필요하지 않습니다. 당신이 그것을 선호하지 않는 한 ...
FrustratedWithFormsDesigner

1
그렇습니다. 그러나 나의 주요 작업 IDE VS는 C ++을위한 것이 없습니다 :( 도구가 없을 때 방법을 찾을 것입니다!
Stephen Bailey

1
Whole Tomato의 Visual Assist X는 C ++ 용 VS에 리팩토링을 추가합니다.
stonemetal

4

줄 번호에 차이가 있으면 컴파일러 복구 한 후 다른 오류를 발견 했을 수 있습니다.

일반적으로 각 묶음에서 하나의 오류 만 수정하려고합니다.


1

더 나은 컴파일러는 더 나은 결과를 생성하고 첫 번째 오류 후에 유용한 오류를 제공합니다. 종종 오류를 자동으로 수정하여 적어도 좋은 코드를 확인할 수 있습니다. 그러나 나는 문법 오타가 즉시 감지되고 쉽게 수정되는 Eclipse의 Java 작업에 익숙해졌으며 다른 컴파일러 오류는 컴파일러가 더 다양하고 쉽게 복구되는 경향이 있습니다. Microsoft IDE 및 C ++ 또는 C #에서 작업 할 때 비슷하다고 가정 할 수 있습니다.


0

예-또는 적어도 나는 탈지합니다. 오류가 관련되어 있는지 (보통 줄 번호를 보는 것으로 충분 함) 알아내는 것이 매우 쉽고, 한 번에 모두 수정 한 다음 다시 컴파일하는 것을 좋아합니다.


0

1 cpp 컴파일이 매우 긴 경우에만이 작업을 수행합니다 (첫 번째 오류를 지나서 오류를 읽습니다). 또는 사용할 수 없습니다. 그런 다음 컴파일러 오류에서 식별 할 수있는 모든 것을 첫 번째 오류와 관련이없는 것으로 수정했는지 확인하고 싶습니다.

cpp 파일을 단독으로 컴파일 할 수 있고 1 초 이내에 (또는 컴파일을 시작하기 전에 "지능형"포인팅 오류가있는 경우) 대부분의 시간을 할 필요는 없습니다.

나는 현재 하나의 cpp 만 컴파일 할 수없는 프로젝트에서 일하고 있습니다 (그리고 빌드 시스템에 손을 대지 않아도 O__o를 변경할 수 없습니다). 일부 cpp 파일은 컴파일하는 데 10 분 이상 걸릴 수 있습니다 ( 그것을 줄이기 위해 많은 노력을 기울인 후에도 원래 컴파일 시간의 50 %로 줄였습니다 ...).

이런 종류의 매우 긴 컴파일 설정에서, 당신은 "build"를 누르기 전에 많은 것을 먼저 생각하는 경향이 있습니다 ... 그리고 심지어 나중에 생각하기도합니다. 아마 컴파일러보다 버그를 발견하기 전에, 그것들보다 정신적으로 빨리 얻는 것이 더 빠를 수도 있습니다. .


-1

당신이하는 것처럼하는 것이 일반적입니다. 나는 보통 인턴 또는 초보자 프로그래머에게 오류의 수에 압도되어 첫 번째 오류를 제외한 거의 모든 오류를 무시하도록 지시합니다. 수정해야 할 실제 오류 일 가능성이 높으며 이전 오류로 인한 잘못된 팬텀 오류가 아닙니다. 일부 (대부분?) 컴파일러에는 이러한 이유로 첫 번째 오류 후에 컴파일을 중지하는 옵션이 있습니다. 일반적으로 빌드 시스템은 오류가있는 첫 번째 파일 이후에 중지되도록 구성 할 수 있습니다.

그러나 오류를 감지 한 후에도 계속 컴파일해야하는 이유가 있습니다. 예를 들어, 오류가있는 파일 수를 계산하거나 포함 된 헤더 파일이 둘 이상의 파일에서 오류를 발생시키는 지 확인할 수 있습니다.

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