2012-06-07 21 views
12

Tôi đang bao gồm tệp từ thư viện của bên thứ ba làm tăng lỗi có thể bị hạ cấp xuống cảnh báo với -fpermissive. Nhưng vì tôi không muốn "gây ô nhiễm" nhật ký biên dịch của tôi với những cảnh báo này, tôi muốn hoàn toàn vô hiệu hóa các thông báo này.Trong gcc, làm thế nào để tắt tiếng cảnh báo -fpermissive?

Cho đến giờ, tôi đặt tùy chọn -fpermissive với diagnostic pragma khi bao gồm tệp; cái gì đó như:

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-fpermissive" 

#include <third-party-file.h> 

#pragma GCC diagnostic pop 

Từ gcc thường cung cấp cả một phiên bản "tích cực" và "tiêu cực" của -f cờ, tôi nghĩ về phớt lờ "không-dễ dãi" tính năng:

#pragma GCC diagnostic ignored "-fno-permissive" 
#include <third-party-file.h> 

Nhưng có dường như không phải là phiên bản "phủ định" của cờ -fpermissive (Tôi đang sử dụng gcc 4.6.3; nhưng ngay cả phiên bản 4.7.0 does not have it).

Bất kỳ cơ hội nào tôi có thể bắt chước hành vi này? Cảm ơn!

+1

'-fno-permissive' là mặc định. '-fpermissive' và không có gì là phiên bản" tiêu cực "và" tích cực "của cờ. Điều đó nói rằng, bạn không nên sử dụng điều này. Sửa mã! Ngay cả khi nó không phải của bạn. – rubenvb

+1

-fno-permissive không phải là mặc định, vì tùy chọn không tồn tại. Các hành vi nó sẽ có nếu nó đã tồn tại sẽ là mặc định mặc dù. Tôi có thể sửa mã, nhưng nó có vẻ giống như một giải pháp khác ... Dù sao, sửa toàn bộ các tiêu đề được bao gồm không thực sự là một lựa chọn. – piwi

+0

đó là chính xác những gì tôi có ý nghĩa. '-fpermissive' là hack/workaround ở đây. Chúng ta đang nói về mã nào. Có thể có một lựa chọn tốt hơn. – rubenvb

Trả lời

11

Đó có lẽ hơi muộn cho điều này, nhưng một trong những phải làm những gì bạn muốn:

#pragma GCC diagnostic ignored "-fpermissive" 

hoặc

#pragma GCC diagnostic ignored "-pedantic" 

"phớt lờ" là cách bạn đè bẹp một chẩn đoán hoàn toàn, và nghịch đảo của -fpermissive-pedantic, vì lý do lịch sử.

+1

Cảm ơn bạn đã trả lời! Bạn có biết nơi tôi có thể tìm thấy đề cập về '-pedantic' là nghịch đảo của' -fpermissive'? – piwi

+1

Thật không may là nó không được ghi chép rõ ràng. Bạn có thể đọc về '-fpermissive' tại đây: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/C_002b_002b-Dialect-Options.html#index-fpermissive-154 và' -pedantic' tại đây: http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Warning-Options.html#index-pedantic-257 Và nếu bạn đọc giữa các dòng, bạn có thể hiểu rằng những gì đang xảy ra là Trình biên dịch C++ có '-pantic-errors' làm trạng thái mặc định của nó. Nhưng tôi không thể chứng minh điều đó với bạn mà không chỉ vào mã thực tế ... – zwol

+0

... và họ không có chỉ mục chéo trực tuyến cho VCS của họ nên tôi không thể tìm thấy bit thực tế có liên quan mà không tải xuống tất cả và chạy một loạt các 'grep', mà tôi không có thời gian cho buổi sáng này. Lấy làm tiếc. – zwol