2013-05-24 35 views

Trả lời

-1

Không có tùy chọn để kiểm soát nó, do đó, chỉ cần cấm cảnh báo này trong mã của bạn.

2

Không có tùy chọn -W cho "#pragma một lần trong tệp chính", vì vậy, bạn không thể tắt tùy chọn này thông qua các phương tiện thông thường. (Tuy nhiên, các nhà phát triển Clang rất ý thức được rằng những cảnh báo mà không -W tùy chọn mút, và có một quy tắc chung mà mới cảnh báo luôn được -W tùy chọn. Dọn dẹp mã , không may, là trái như một bài tập cho thất vọng . users)

Nếu bạn không nhớ hackery vỏ, bạn có thể luôn luôn làm một cái gì đó như thế này:

# This gives the warning... 
clang -c myheader.h 

# ...This doesn't. 
echo '#include "myheader.h"' | clang -c -x c++-header -o myheader.h.gch - 

Các trailing -, như thường lệ, có nghĩa là "đọc từ stdin". -x c++ cho Clang biết bạn đang sử dụng ngôn ngữ nào (vì nó không thể nói từ phần mở rộng của tệp khi có không có tệp) và thay đổi c++ thành c++-header có nghĩa là chúng tôi muốn tạo tệp .gch thay vì. tập tin.

Hai tệp .gch do đó được tạo ra là NOT bit-cho-bit giống nhau. Tôi không biết đủ về các tệp gch để cho bạn biết những gì có thể quan sát khác nhau về hành vi của họ. Tuy nhiên, vì tất cả những gì bạn quan tâm là AST của Clang, tôi cá là bạn sẽ ổn với nó. :)

4

Tôi đã có điều này khi tôi vô tình bao gồm một tệp tiêu đề trong các nguồn biên dịch (tiêu đề này có #pragma một dòng). Để khắc phục tiêu đề xóa này khỏi các nguồn biên dịch (và có thể bạn cần thay thế nó bằng tệp .cpp)

+1

Đây là vấn đề tôi gặp phải vì tôi đã sử dụng $^trong tệp makefile của mình làm lối tắt. – VaelynPhi

3

Sử dụng đối số dòng lệnh -Wno-pragma-once-outside-header.

+0

cảnh báo: tùy chọn cảnh báo không xác định '-Wno-pragma-once-outside-header' – Sergey

+0

Cảm ơn @Sergey, điều này đã làm việc cho tôi vào thời điểm đó. – W1M0R

3

Sử dụng tùy chọn -w (viết thường w không viết hoa W) khi biên dịch nguồn để chặn cảnh báo như vậy.

+0

Tôi có thể xác nhận rằng nó hoạt động với gcc 5.4 – Julian

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