2010-07-08 11 views
6

Tôi muốn biên dịch mã của mình bằng -Wall và đôi khi thậm chí là -pantic. Đó là một phần một điều phong cách, và một phần thực tế là nó thỉnh thoảng phát ra những cảnh báo rất hữu ích (như sử dụng = chứ không phải = =).Có cách nào tôi có thể làm cho g ++ chỉ phát ra cảnh báo liên quan đến các tệp của tôi không?

Tuy nhiên, các tác giả của một số tiêu đề của tôi rõ ràng không phải là người gắn bó như vậy. Việc biên dịch với một trong hai mức cảnh báo sẽ tạo ra một mớ hỗn độn khổng lồ về đầu ra, hoàn toàn đánh bại mục đích biên dịch theo cách đó ngay từ đầu.

Vậy làm cách nào để trình biên dịch của tôi bỏ qua những cảnh báo đó?

+7

Bạn đánh bại những morons trên đầu với một con dơi đến khi họ sửa chữa tất cả các cảnh báo trong tiêu đề, sau đó luôn sử dụng '-Wall -Wextra -pedantic'. –

+0

@NikolaiNFetissov Bạn cũng cần sử dụng '-Werror', theo cách đó chúng không thể biên dịch nếu có cảnh báo. Điều đó có nghĩa là họ không nên chia sẻ mã với thậm chí một cảnh báo ... –

Trả lời

8

Ngoài ra để JS Bangs' answer, bạn có thể có GCC đối xử với họ như system headers, giúp chặn đứng tất cả cảnh báo (trừ #warning chỉ thị) đối với những tiêu đề.

Nếu -isystem chuyển đổi là vô ích, bạn có thể bọc tất cả các tiêu đề vi phạm với tiêu đề đơn giản rằng chỉ chứa dòng thích hợp:

#pragma GCC system_header 
1

Sử dụng #pragma thích hợp để tắt cảnh báo trước khi bạn bao gồm tiêu đề xấu, sau đó bật lại cảnh báo sau đó. Docs on the GCC pragmas.

0

Dường như chúng là tiêu đề "của bạn", nghĩa là bạn có thể tự sửa đổi hoặc để cho "người viết" làm điều đó cho bạn. Nếu bạn muốn theo đuổi một cuộc sống tự do cảnh báo, hãy xóa các tiêu đề đó :).

Hoặc bạn có thể tất nhiên sử dụng pragma, nhưng họ chống phong cách và xấu xí :)

7

Khi gọi GCC, sử dụng -isystem thay vì -I để cung cấp cho các đường dẫn đến tiêu đề có vấn đề của bạn nên im lặng cảnh báo đối với những tiêu đề. Xem GCC docs hoặc this SO question.

+0

Cảm ơn bạn! Điều này đã khắc phục được sự cố của tôi. – Salgat

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