2016-09-06 15 views
7

Ví dụ:Sự khác biệt giữa lỗi trình biên dịch bình thường và lỗi trình biên dịch gây tử vong là gì?

Bình thường Lỗi trình biên dịch:

C:\Documents and Settings\admin\Desktop\mystermini\main.cpp(1066) : error C2065: 'break_me' : undeclared identifier 

Fatal Error:

C:\Documents and Settings\admin\Desktop\mystermini\main.cpp(1050) : fatal error C1016: #if[n]def expected an identifier 
+0

http://stackoverflow.com/a/25402049/6313992 –

+0

Sau một lỗi nghiêm trọng, trình biên dịch không thể tiếp tục xử lý đầu vào còn lại và phải dừng lại. – Elijan9

+0

@TomaszPlaskota: có, sao chép nó! –

Trả lời

9

Một lỗi nghiêm trọng có lẽ sẽ dừng lại lập đơn vị dịch ngay lập tức.

Trình biên dịch có thể tiếp tục biên dịch sau khi lỗi để tiết lộ cho bạn danh sách các vấn đề toàn diện hơn.

Mặc dù trong trường hợp của bạn, dường như bộ xử lý trước đã phát hành lỗi nghiêm trọng. Có lẽ nó chỉ đơn giản là xuống đến tâm trạng của nhà biên dịch trình biên dịch.

6

Sự khác biệt là thế này:.

  • trên một lỗi bình thường, trình biên dịch có thể tiếp tục phân tích cú pháp của nó, nó chỉ là một vấn đề địa phương (biến chưa được khai báo ví dụ, nhưng trình biên dịch biết làm thế nào để phục hồi từ nó Một số trình biên dịch đi xa trong quá trình đó, thêm thiếu ; và như vậy)
  • trên lỗi nghiêm trọng, trình biên dịch (hoặc bộ tiền xử lý) không thể biết cách tiếp tục (như bị mất) do lỗi cấu trúc (mất ngữ cảnh)

Điều này giải thích rằng đôi khi bạn sửa tất cả các lỗi biên dịch của mình và các lỗi mới xuất hiện.

Các vấn đề liên quan