2012-05-02 40 views
50

Làm cách nào để sử dụng các tính năng C++ 11 mới nhất trong Clang? Bộ tính năng (phụ) nào được hỗ trợ?Làm cách nào để sử dụng các tính năng C++ 11 trong Clang?

+5

Tôi đã thêm thẻ [tag: C++ 11] vào đây, câu hỏi này dường như có khả năng tạo đủ sự quan tâm trong tương lai có khả năng hiển thị thêm cho các chuyên gia C++ 11 lên phía trước dường như có giá trị đối với tôi - nhưng nếu bạn muốn hạn chế thẻ cho các vấn đề nghiêm ngặt _language_, vui lòng xóa nó - và tôi tò mò muốn biết về nó. Cảm ơn :) – sarnold

Trả lời

66

Bạn sẽ cần vuốt 3.3 để sử dụng bộ tính năng liên quan nhất từ ​​C++ 11. Đọc C++ Support in Clang để biết danh sách đầy đủ các tính năng được hỗ trợ cập nhật. Clang 3.3 được cho là hoàn thành tính năng C++ 11.

dòng lệnh Clang là gcc-tương thích, do đó bạn phải kích hoạt C++ 11 hỗ trợ thông qua followinf dòng lệnh switch

-std=c++11 

Ngoài ra còn có một loạt các hậu C++ 11 tính năng (như decltype (auto), initializers thành viên và aggregates) được hỗ trợ bởi Clang 3.3. Sử dụng công tắc dòng lệnh này để bật chúng

-std=c++1y 
+2

Điều làm cho điểm đáng tiếc là trang này không được cập nhật ... Tôi sẽ nêu vấn đề này trong danh sách: x –

+3

Đó là, nhưng có một vấn đề khiến nó không cập nhật bộ nhớ cache .. vì vậy chỉ cần Ctrl + R và bạn sẽ nhận được nó. – Klaim

+4

Nếu bạn đang sử dụng clang/llvm trên Mac, bạn cũng sẽ phải thêm -stdlib = libC++ (bên cạnh cờ -std = C++ 11) để truy cập hầu hết các tính năng vì chúng không có sẵn trong libstdC++ cũ. Nhưng hãy cẩn thận - bạn sẽ nhận được abi-mâu thuẫn khi truyền các đối tượng std tới các thư viện được liên kết với libstdC++ (ví dụ nếu bạn sử dụng boost mà bạn chưa biên dịch theo cách thủ công với libC++) – kamjagin

15

Đây là luôn được danh sách cập nhật các tính năng được hỗ trợ bởi kêu vang:

http://clang.llvm.org/cxx_status.html

Để kích hoạt C++ 11, bạn phải thêm -std = C++ 11 trong các cuộc gọi kêu vang của mình, thích cho gcc. Nếu bạn sử dụng một IDE có ý thức về clang hoặc gcc, có một tùy chọn cài đặt dự án cụ thể có sẵn để thực hiện điều đó.

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