2016-05-25 18 views
10

GCC 6.1.1 mang lại cho tôi một lời cảnh báo tuyên bố phản đối trên C++thành viên struct phản C++

struct foo 
{ 
    __attribute__ ((deprecated)) static const int a = 1; 
}; 


dep.cpp:1:8: warning: ‘foo::a’ is deprecated [-Wdeprecated-declarations] 
    struct foo 
      ^~~ 
dep.cpp:3:50: note: declared here 
    __attribute__ ((deprecated)) static const int a = 1; 

Các documentation nói rằng "Các kết quả thuộc tính bị phản đối trong một cảnh báo nếu biến được sử dụng bất cứ nơi nào trong tập tin nguồn ".

Khi cảnh báo trỏ đến dòng đầu tiên (struct foo), điều đó có nghĩa là cảnh báo được nâng lên vì cấu trúc "đang sử dụng" thành viên không được chấp nhận? Có cách nào để sử dụng thuộc tính không được chấp nhận cho các thành viên cấu trúc const tĩnh không?

GCC 4.9.3 dường như không đưa ra cảnh báo này.

+0

trông giống như một lỗi –

+4

Có thể là lỗi trình biên dịch - gcc có khả năng bị nhầm lẫn bởi phần "= 1" và diễn giải nó dưới dạng sử dụng. –

+0

@ M.M: bạn đã thử nó trong 'clang ++ 'chưa? – Destructor

Trả lời

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