2011-12-14 28 views
8

Tôi đang cố biên dịch giới thiệu cờ -Werror trong một cơ sở mã hiện có. Một trong những vấn đề tôi gặp phải là ở một số nơi, #warning được sử dụng để hiển thị thông báo thông tin. Đây không phải là lỗi.Làm thế nào để ngăn chặn các thông báo `# warning` bị coi là lỗi?

Một giải pháp sẽ là sử dụng #pragma message thay vào đó, nhưng điều này dường như không được hỗ trợ bởi các phiên bản cũ hơn của gcc. (Máy chủ xây dựng của chúng tôi sử dụng gcc 4.1.2).

Có ai có thể giúp tôi khắc phục sự cố này không?

+5

Vâng, bạn đang lạm dụng '# warning'. Loại bỏ điều đó, giải quyết vấn đề. –

+4

@CatPlusPlus: Còn việc đăng một giải pháp thay thế thì sao? – UncleBens

+1

@UncleBens: Tôi cần phải xem những gì nó thực sự làm ở đó để đề xuất thay thế khác hơn là "loại bỏ nó". Có thể nó có thể được thay thế bằng một cái gì đó trên một mức độ hệ thống xây dựng. –

Trả lời

4

Trong gcc-4.6 trở lên, bạn có thể sử dụng -Wno-error=cpp. Trong ít nhất là tiếng kêu được phát hành với Lion và sau đó, bạn có thể sử dụng -Wno-error=#warnings. Nhưng kể từ khi máy chủ xây dựng của bạn sử dụng gcc cổ, bạn có thể không may mắn ở đó.

Nói chung, vượt qua -fdiagnostics-show-tùy chọn để có cảnh báo hiển thị đầu ra như:

test.cc:1:2: warning: #warning hello [-Wcpp] 

mà nói với bạn một lá cờ cảnh báo rằng điều khiển cảnh báo. Trong gcc> = 4.6 và clang, đây là mặc định, vì vậy việc biết để vượt qua nó có thể không còn hữu ích nữa.

1

tại địa phương vô hiệu hóa ảnh hưởng của -Werror cho #warning như sau:

#pragma GCC diagnostic push 
#pragma GCC diagnostic warning "-Wcpp" 
#warning Informative message: everything is nice and good!!! 
#pragma GCC diagnostic pop 

Lợi ích của phương pháp này là bạn vẫn có thể gây ra lỗi với #warning nơi khác trong các mã.

+2

Ở trên dường như không hoạt động với gcc 4.1.2 - Tôi nhận được "cảnh báo: bỏ qua #pragma GCC chẩn đoán" và #warning line được chọn là lỗi (như -Werror được xác định) –

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