2011-07-28 2 views
6

gcc가 오류를보고하도록 강제 할 수 있습니까? 본질적으로 .c 파일에서 오류 목록을 생성하려고하지만 gcc는 항상 첫 번째 오류에서 종료됩니다. 나는 잠시 동안 인터넷 검색을 해왔다. 그리고 이것은 내가 말할 수있는 것을 해결할 명백한 것이 아니다.gcc가 오류를 건너 뛰지 만 출력하는 방법.

답변

0

최신 버전의 GCC는 가능하면 특정 오류를 건너 뜁니다.

foo(){...의 본문에는 const 위반이 있습니다. 번역 단위는 개체 파일을 생성하지 않지만 괜찮은 컴파일러는이 오류를 지나서 계속 bar(){...

다른 오류는 복구 할 수 없습니다. 일부 중괄호를 빠뜨린 경우 진행 방법에 관해서는 합리적인 추측은 없습니다. gcc online doc에서

+0

컴파일러에서 오류를 복구 할 수 있는지 여부를 나타 냅니까? 예를 들어 아래에 몇 가지 결과물을 게시 할 것입니다. make는 다음 객체로 계속 진행하지만 이전 gcc 오류로 인해 해당 객체의 컴파일이 종료되었거나 실제로 계속되었지만 더 이상 오류가 발생하지 않은 경우 명확하지 않습니다. – chrisvarnz

+0

CC [M] /home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_lnx.o /home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_lnx.c:356:2 : 오류 : 알 수 없음 필드 'ioctl'이 이니셜 라이저에 지정됨 /home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_lnx.c:356:2 : 경고 : 호환되지 않는 포인터 유형에서 초기화 됨 [2] : [/ home/stebar01/03932010/driver/linux/crystalhd_lnx.o] 오류 1 (무시) ​​ CC [M] /home/stebar01/elba/crystalhd/07032010/driver/linux/crystalhd_hw.o – chrisvarnz

+0

ioctl 항목을 unlocked_ioctl로 변경했습니다. 그리고이 객체는 소란스럽지 않고 컴파일되었으므로 위의 예는 gcc가 오류를 지나서 계속 수행하는 예를 보여줍니다! 설명 주셔서 감사합니다. – chrisvarnz

2

GCC는 더 이상 진행할 수 없으면 종료됩니다.

컴파일러에서 오류가 발생하면 올바른 코드가 무엇인지 추측하고 따라야합니다. 사실상 나머지는 말도 안되기 때문에 항상 첫 번째 오류를 수정하고 컴파일을 다시 실행해야합니다.

-Wfatal-errors을 켜지 않았는지 확인하십시오.

+3

포스터 오류의 전체 목록을 가지고 찬성 컴파일 된 출력을 가진 포기할 것 같다. 일부 오류는 출력을 배제하더라도 프로그램 구문 분석을 방해하지 않습니다. 그러나 다른 사람들은 불일치() 나 {} 또는 ""다음 파싱이 의미있는 것으로 될 수있을 때까지 회복 할 수있는 막대한 지능이 필요할 것이라고 말합니다. –

+0

이것은 정확합니다. 출력 객체에 관해서는이 시점에서 덜 신경 쓸 수 있습니다. 오류 목록에만 관심이 있습니다. 대부분의 오류는 x86보다는 ARCH = arm을위한 커널 모듈을 만들려고 시도했기 때문에 x86에 많은 x86 사양이 있습니다. 즉, rdtscll (x86 전용의 타임 스탬프 카운터를 읽습니다)이므로 일반적으로 코드 구조와 구문은 괜찮습니다. – chrisvarnz

0

:

-fmax-errors=n

Limits the maximum number of error messages to n, at which point GCC bails out rather than attempting to continue processing the source code. If n is 0 (the default), there is no limit on the number of error messages produced. If -Wfatal-errors is also specified, then -Wfatal-errors takes precedence over this option.

관련 문제