2011-08-21 40 views

Trả lời

10

Nó sử dụng các xét nghiệm tiền xử lý khác nhau đối với từng tính năng riêng biệt, như

#if __has_feature(cxx_decltype) 

để thử nghiệm nếu decltype được thực hiện.

Xem danh sách đầy đủ ở đây

http://clang.llvm.org/docs/LanguageExtensions.html#checking_upcoming_features

+0

Cảm ơn cho trỏ này ra. Có vẻ như có thể sử dụng được. – wilx

+3

Tôi phải thừa nhận rằng tôi thực sự thích hệ thống này, tôi muốn các trình biên dịch khác sẽ * nhảy vào bandwagon * ở đây. Nó chỉ là nhiều hơn nữa tự giải thích hơn so với kiểm tra đối với một số phiên bản. –

0

Clang xác định vĩ mô như nhau, chủ yếu là để tương thích với libstdc của GCC++.

tôi dường như nhớ devs thích kiểm tra tính năng cụ thể như trong libC++ better:

(Cuộn xuống một số)

2

Tiêu chuẩn nói rằng bạn có thể nhìn vào giá trị của _cplusplus để xác định tiêu chuẩn trình biên dịch đang nhắm mục tiêu. Mặc dù, trong thực tế, bạn có thể không thể làm được gì nhiều với thông tin này. Xem câu trả lời của Bo Persson cho một giải pháp tốt hơn nhiều.

C++ 98/03 - 199711L

C++ 11 - 201103L

+0

'__cplusplus = 199711L/201103L' chỉ bằng GCC 4.7.0 trở lên, trừ khi bản vá được trả về. 4.6 và trước đó sử dụng '__cplusplus = 1'. – moshbear

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