Tôi muốn sử dụng C ++ 17 tính năng.
Làm cách nào để chuyển biên dịch từ C ++ 14 sang C ++ 17 trong Microsoft Visual Studio?
Hoặc nó không có sẵn trong các phiên bản phát hành của VS?
Tôi muốn sử dụng C ++ 17 tính năng.
Làm cách nào để chuyển biên dịch từ C ++ 14 sang C ++ 17 trong Microsoft Visual Studio?
Hoặc nó không có sẵn trong các phiên bản phát hành của VS?
Câu trả lời:
Bây giờ có một menu thả xuống (ít nhất là kể từ VS 2017.3.5), nơi bạn có thể chọn C ++ 17 một cách cụ thể. Các tùy chọn có sẵn là (trong dự án> Thuộc tính> C / C ++> Ngôn ngữ> Tiêu chuẩn ngôn ngữ C ++)
/std:c++14
/std:c++17
/std:c++latest
(Tôi cá rằng, khi C ++ 20 ra mắt và được hỗ trợ đầy đủ hơn bởi Visual Studio thì nó sẽ được hỗ trợ /std:c++20
)
-std:c++14
, -std:c++17
và -std:c++latest
cũng làm việc, ví dụ như khi bạn muốn tự nhập tùy chọn trình biên dịch (thử nghiệm với VS2017).
-
thay vì các /std:
công tắc tôi liệt kê?
gcc
hoặc clang
. Sau đó, -
ít xâm nhập hơn (tuy nhiên cú pháp vẫn khác một chút ( :
thay vì =
)).
MSBuild (Dự án / giải pháp Visual Studio * .vcproj / *. Sln ) :
Thêm vào Tùy chọn bổ sung trong Cài đặt dự án: /std:c++latest
để bật các tính năng mới nhất - hiện tại là C ++ 17 kể từ VS2017, VS2015 Cập nhật 3.
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
sẽ tắt các tiện ích mở rộng C ++ không chuẩn và sẽ kích hoạt tính năng tuân thủ tiêu chuẩn trong VS2017.
https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
CHỈNH SỬA (tháng 10 năm 2018): Các tính năng mới nhất của VS2017 được ghi lại ở đây:
https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 hỗ trợ: /std:[c++14|c++17|c++latest]
ngay bây giờ. Các cờ này có thể được đặt thông qua các trang thuộc tính của dự án:
Để đặt tùy chọn trình biên dịch này trong môi trường phát triển Visual Studio
- Mở hộp thoại Trang thuộc tính của dự án. Để biết chi tiết, hãy xem Làm việc với Thuộc tính Dự án.
- Chọn Thuộc tính cấu hình, C / C ++, Ngôn ngữ.
- Trong Tiêu chuẩn ngôn ngữ C ++, chọn tiêu chuẩn ngôn ngữ để hỗ trợ từ điều khiển thả xuống, sau đó chọn OK hoặc Áp dụng để lưu các thay đổi của bạn.
CMake :
Visual Studio 2017 (15.7+) hỗ trợ các dự án CMake. CMake làm cho nó có thể kích hoạt các tính năng C ++ hiện đại theo nhiều cách khác nhau. Tùy chọn cơ bản nhất là kích hoạt tiêu chuẩn C ++ hiện đại bằng cách đặt thuộc tính của mục tiêu trong CMakeLists.txt:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
Trong trường hợp của một thư viện giao diện:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
Visual Studio 2015 Update 3 không hỗ trợ tính năng C ++ 17 mà bạn đang tìm kiếm ( emplace_back()
trả về tham chiếu).
Hỗ trợ các tính năng C ++ 11/14/17 (C ++ hiện đại)
Các tính năng của C ++ 11/14/17 trong VS 2015 RTM
VS 2015 Cập nhật 2 STL là C ++ 17 tính năng cho đến nay đã hoàn thành
Nếu đưa giải pháp Visual Studio 2015 hiện có vào Visual Studio 2017 và bạn muốn xây dựng nó bằng trình biên dịch gốc c ++ 17, trước tiên bạn nên nhắm mục tiêu lại giải pháp / dự án thành v141, SAU ĐÓ trình đơn thả xuống sẽ xuất hiện như mô tả ở trên (Thuộc tính cấu hình -> C / C ++ -> Ngôn ngữ -> Tiêu chuẩn ngôn ngữ)
Phiên bản Visual Studio 2019:
Menu thả xuống đã được chuyển đến:
c++11
vàc++14
?