2010-04-20 34 views
5

Tôi đang xây dựng chương trình của mình với cờ -pedantic gây ra lỗi extra ';' (do tiêu đề của bên thứ ba sử dụng một vài macro không nhất quán; không hiển thị khi -pedantic tắt). Tôi thực sự không muốn tắt -pedantic và tôi cũng không muốn chỉnh sửa tiêu đề. Có cách nào để ngăn chặn lỗi chính xác này? Giống như một chuyển đổi trình biên dịch -Wno-annoying-semicolon-error hay gì đó?Loại bỏ lỗi "thêm"; "" trong GCC khi -pantic là trên

+0

tại sao bạn muốn sử dụng pedantic? xem http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options dường như không có cách nào để làm những gì bạn muốn. chắc chắn nếu việc sử dụng pedantic chỉ đơn thuần dựa trên cảm giác, bạn tốt hơn nếu không có nó ;-) –

+0

Vâng, không chỉ cảm giác :) Có một số khuyến nghị mạnh mẽ mà tôi phải theo dõi –

+0

Hmmm khó khăn. Tôi không cho rằng tiêu đề của bên thứ ba là nguồn mở? Bất kỳ cơ hội sửa chữa nó? –

Trả lời

1

Giải pháp thay thế là xóa -pedantic. Không có gì khác sẽ làm việc trên trường hợp đó.

+0

... hoặc để sửa mã lỗi. Than ôi. –

+0

@RomanD Là một dấu chấm phẩy phụ thực sự "lỗi"? –

+0

@KyleStrand Không thực sự "lỗi", nhưng cũng không hoàn toàn chính xác. Tôi không nhớ thư viện nào đã gây ra rắc rối cho tôi bốn năm trước, nhưng có một số ma thuật vĩ mô dẫn đến vấn đề này. –

2

Sử dụng -isystem thay vì sau đó -I khi chuyển các đường dẫn bao gồm, sau đó GCC sẽ không cảnh báo bạn về tiêu đề hệ thống.

Đối với mọi tiêu đề bạn duy trì, chỉ cần chỉnh sửa chúng.

+0

Đã không làm việc cho tôi. Bao gồm thư viện với -isystem nhưng cảnh báo vẫn được ném cho linux-> apple cross-compiler, nhưng nó chắc chắn làm việc cho g ++ và clang – Flamefire

2

Bạn có thể ngăn chặn cảnh báo pedantic cho tiêu đề bên ngoài như thế này:

//save compiler switches 
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wpedantic" 

//Bad headers with problem goes here 
#include <ros/ros.h> 
#include <sensor_msgs/LaserScan.h> 

//restore compiler switches 
#pragma GCC diagnostic pop 
Các vấn đề liên quan