मैं C ++ 17 सुविधाओं का उपयोग करना चाहता हूं।
मैं Microsoft विज़ुअल स्टूडियो में C ++ 14 से C ++ 17 में संकलन कैसे स्विच कर सकता हूं?
या यह वीएस के रिलीज संस्करणों में उपलब्ध नहीं है?
मैं C ++ 17 सुविधाओं का उपयोग करना चाहता हूं।
मैं Microsoft विज़ुअल स्टूडियो में C ++ 14 से C ++ 17 में संकलन कैसे स्विच कर सकता हूं?
या यह वीएस के रिलीज संस्करणों में उपलब्ध नहीं है?
जवाबों:
अब एक ड्रॉप डाउन है (कम से कम वीएस 2017.3.5 के बाद से) जहां आप विशेष रूप से सी ++ 17 का चयन कर सकते हैं। उपलब्ध विकल्प हैं (परियोजना के तहत> गुण> C / C ++> भाषा> C ++ भाषा मानक)
/std:c++14
/std:c++17
/std:c++latest
(मैं शर्त लगाता हूं, एक बार सी ++ 20 बाहर है और विजुअल स्टूडियो द्वारा पूरी तरह से समर्थित है /std:c++20
)
-std:c++14
, -std:c++17
और -std:c++latest
यह भी काम करता है।
-
से /std:
स्विच के बजाय मेरी सूची में हैं?
gcc
या आते समय मुझे इसका फायदा दिखता है clang
। फिर -
कम घुसपैठ है (हालांकि सिंटैक्स अभी भी थोड़ा अलग है ( :
इसके बजाय =
))।
MSBuild (दृश्य स्टूडियो परियोजना / समाधान * .vcproj / *। Sln ) :
प्रोजेक्ट सेटिंग्स में अतिरिक्त विकल्पों में जोड़ें: /std:c++latest
नवीनतम सुविधाओं को सक्षम करने के लिए - वर्तमान में VS2017, VS2015 अपडेट 3 के रूप में C ++ 17।
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/
EDIT (अक्टूबर 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 विकास वातावरण में सेट करने के लिए
- प्रोजेक्ट के प्रॉपर्टी पेज डायलॉग बॉक्स को खोलें। विवरण के लिए, प्रोजेक्ट गुण के साथ कार्य करना देखें।
- कॉन्फ़िगरेशन गुण, C / C ++, भाषा चुनें।
- C ++ भाषा मानक में, ड्रॉपडाउन नियंत्रण से समर्थन के लिए भाषा मानक चुनें, फिर अपने परिवर्तनों को सहेजने के लिए OK या लागू करें चुनें।
CMake :
विजुअल स्टूडियो 2017 (15.7+) CMake परियोजनाओं का समर्थन करता है। CMake विभिन्न तरीकों से आधुनिक C ++ सुविधाओं को सक्षम करना संभव बनाता है। CMakeLists.txt में लक्ष्य की संपत्ति सेट करके एक आधुनिक C ++ मानक को सक्षम करने के लिए सबसे बुनियादी विकल्प है :
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
)
विजुअल स्टूडियो 2015 अपडेट 3 सी ++ 17 फीचर का समर्थन नहीं करता है जिसे आप खोज रहे हैं ( emplace_back()
एक संदर्भ लौटाते हुए)।
C ++ 11/14/17 के लिए समर्थन (आधुनिक C ++)
वी ++ 2015 आरटीएम में सी ++ 11/14/17 विशेषताएं
यदि विजुअल स्टूडियो 2017 में मौजूदा विजुअल स्टूडियो 2015 समाधान को लाया जा रहा है और आप इसे c ++ 17 देशी कंपाइलर के साथ बनाना चाहते हैं, तो आपको पहले समाधान / प्रोजेक्ट्स को v141 पर फिर से सेट करना चाहिए, जब तक ड्रॉपडाउन ऊपर वर्णित नहीं होगा (कॉन्फ़िगरेशन गुण -> C / सी ++ -> भाषा -> भाषा मानक)
दृश्य स्टूडियो 2019 संस्करण:
ड्रॉप डाउन मेनू को यहां ले जाया गया:
c++11
औरc++14
?