ฉันต้องการใช้คุณสมบัติ C ++ 17
ฉันจะเปลี่ยนการคอมไพล์จาก C ++ 14 เป็น C ++ 17 ใน Microsoft Visual Studio ได้อย่างไร
หรือไม่สามารถใช้งานได้ใน VS เวอร์ชันที่วางจำหน่าย?
ฉันต้องการใช้คุณสมบัติ C ++ 17
ฉันจะเปลี่ยนการคอมไพล์จาก C ++ 14 เป็น C ++ 17 ใน Microsoft Visual Studio ได้อย่างไร
หรือไม่สามารถใช้งานได้ใน VS เวอร์ชันที่วางจำหน่าย?
คำตอบ:
ตอนนี้มีเมนูแบบเลื่อนลง (อย่างน้อยตั้งแต่ VS 2017.3.5) ซึ่งคุณสามารถเลือก C ++ 17 โดยเฉพาะได้ ตัวเลือกที่ใช้ได้คือ (ภายใต้โปรเจ็กต์> คุณสมบัติ> C / C ++> ภาษา> มาตรฐานภาษา C ++)
/std:c++14
/std:c++17
/std:c++latest
(ฉันเดิมพันเมื่อ C ++ 20 หมดและ Visual Studio จะได้รับการสนับสนุนอย่างเต็มที่/std:c++20
)
-std:c++14
, -std:c++17
และ-std:c++latest
ยังใช้งานได้เช่นเมื่อคุณต้องการที่จะเข้าสู่ตัวเลือกคอมไพเลอร์ด้วยตนเอง (ทดสอบกับ VS2017)
-
แทน/std:
สวิตช์ที่ฉันแสดงรายการ?
gcc
clang
จากนั้นจึง-
มีการล่วงล้ำน้อยกว่า (อย่างไรก็ตามไวยากรณ์ยังคงแตกต่างกันเล็กน้อย ( :
แทนที่จะเป็น=
))
MSBuild (โครงการ Visual Studio / โซลูชัน* .vcproj / *. sln ) :
เพิ่มในตัวเลือกเพิ่มเติมในการตั้งค่าโครงการ: /std:c++latest
เพื่อเปิดใช้งานคุณสมบัติล่าสุด - ปัจจุบัน C ++ 17 ณ VS2017, VS2015 อัปเดต 3
https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/
/permissive-
จะปิดใช้งานส่วนขยาย C ++ ที่ไม่ได้มาตรฐานและจะเปิดใช้งานการปฏิบัติตามมาตรฐานใน VS2017
https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/
แก้ไข (ต.ค. 2018):คุณสมบัติล่าสุดของ VS2017 มีการบันทึกไว้ที่นี่:
https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version
VS2017 รองรับ: /std:[c++14|c++17|c++latest]
ตอนนี้ แฟล็กเหล่านี้สามารถตั้งค่าผ่านเพจคุณสมบัติของโปรเจ็กต์:
เมื่อต้องการตั้งค่าตัวเลือกคอมไพเลอร์นี้ในสภาพแวดล้อมการพัฒนา Visual Studio
- เปิดกล่องโต้ตอบหน้าคุณสมบัติของโครงการ สำหรับรายละเอียดโปรดดูการทำงานกับคุณสมบัติโครงการ
- เลือก Configuration Properties, C / C ++, Language
- ในภาษา C ++ Standard เลือกมาตรฐานภาษาที่จะรองรับจากตัวควบคุมแบบเลื่อนลงจากนั้นเลือกตกลงหรือใช้เพื่อบันทึกการเปลี่ยนแปลงของคุณ
CMake :
Visual Studio 2017 (15.7+) รองรับโครงการ CMake CMake ทำให้สามารถเปิดใช้งานคุณสมบัติ C ++ ที่ทันสมัยได้หลายวิธี ตัวเลือกพื้นฐานที่สุดคือการเปิดใช้งานมาตรฐาน C ++ ที่ทันสมัยโดยการตั้งค่าคุณสมบัติของเป้าหมายใน CMakeLists.txt:
add_library (${PROJECT_NAME})
set_property (TARGET ${PROJECT_NAME}
PROPERTY
# Enable C++17 standard compliance
CXX_STANDARD 17
)
ในกรณีของไลบรารีอินเทอร์เฟซ:
add_library (${PROJECT_NAME} INTERFACE)
target_compile_features (${PROJECT_NAME}
INTERFACE
# Enable C++17 standard compliance
cxx_std_17
)
Visual Studio 2015 Update 3 ไม่สนับสนุนคุณลักษณะ C ++ 17 ที่คุณกำลังมองหา ( emplace_back()
ส่งคืนข้อมูลอ้างอิง)
รองรับคุณสมบัติ C ++ 11/14/17 (Modern C ++)
C ++ 11/14/17 คุณสมบัติใน VS 2015 RTM
STL ของการอัปเดต VS 2015 2 คือ C ++ 17-so-far ฟีเจอร์ที่สมบูรณ์
หากนำโซลูชัน Visual Studio 2015 ที่มีอยู่มาใช้ใน Visual Studio 2017 และคุณต้องการสร้างด้วย c ++ 17 เนทีฟคอมไพเลอร์ก่อนอื่นคุณควรกำหนดเป้าหมายโซลูชัน / โปรเจ็กต์ใหม่เป็น v141 จากนั้นดรอปดาวน์จะปรากฏขึ้นตามที่อธิบายไว้ข้างต้น (คุณสมบัติการกำหนดค่า -> C / C ++ -> ภาษา -> มาตรฐานภาษา)
Visual Studio 2019 เวอร์ชัน:
เมนูแบบเลื่อนลงถูกย้ายไปที่:
c++11
และc++14
?