কীভাবে ভিজুয়াল স্টুডিওতে সি ++ 17 সংকলন সক্ষম করবেন?


120

আমি সি ++ 17 বৈশিষ্ট্য ব্যবহার করতে চাই।

মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিওতে আমি সি ++ 14 থেকে সি ++ 17 তে সংকলন কীভাবে স্যুইচ করতে পারি?

বা এটি ভিএসের প্রকাশ সংস্করণে পাওয়া যায় না?


4
কোন সি ++ 17 বৈশিষ্ট্য? ভিজ্যুয়াল স্টুডিওর কোন সংস্করণ? আপনি যদি C ++ 17 সম্পর্কে জিজ্ঞাসা করছেন তবে আপনি কেন আপনার প্রশ্ন ট্যাগ করেছিলেন c++11এবং c++14?
iljarn

6
সি ++ 17 উপলভ্য ছিল না এবং আমি ভেবেছিলাম যারা সি ++ এর নির্দিষ্ট সংস্করণগুলিতে আগ্রহী তারা কীভাবে এটি পরিবর্তন করবেন তা আরও ভাল জানেন। উদাহরণস্বরূপ, আমি সদ্য তৈরি উপাদানটির একটি রেফারেন্স দিতে std :: vector.emplace_back () চাই। আমি জানি যে +1 লাইন, এবং আমি সেই রেফারেন্স পেয়েছি, তবে আমি যাই হোক না কেন আমার প্রশ্নের উত্তর জানতে চাই। ভিএস সম্প্রদায় 2015 (14.0.25431.01 আপডেট 3)
টুডওয়ারী

আপনার সম্ভবত এখানে চেক করা উচিত: ব্লগস.এমএসডিএন.মাইক্রোসফট
মাইকেল এফ

3
আপনি ভিএস-তে নির্দিষ্ট ভাষার উপভাষাগুলি সক্ষম করতে পারবেন না, তারা যা প্রয়োগ করেছেন তা পেয়ে যান। আপনি যদি ভিএস 21015 ব্যবহার করেন তবে ভাষা বৈশিষ্ট্যগুলির সাথে এতটা না থাকলে স্ট্যান্ডার্ড লাইব্রেরি বৈশিষ্ট্যগুলি সি ++ 17 এ ভোট দেওয়াতে আপনার ভাগ্য ভাল হতে পারে।
প্রিটোরিয়ান

1
@ প্রীট এমএসভিসি 2017 এর একটি "সর্বশেষ" সেটিংস রয়েছে, তবে এটি এখনও প্রকাশিত হয়নি।
ইয়াক্ক - অ্যাডাম নেভ্রামামন্ট

উত্তর:


161

এখন একটি ড্রপ ডাউন রয়েছে (কমপক্ষে ভিএস 2017.3.5 থেকে) যেখানে আপনি নির্দিষ্টভাবে সি ++ 17 নির্বাচন করতে পারেন select উপলভ্য বিকল্পগুলি হ'ল (প্রকল্পের অধীনে> সম্পত্তি> সি / সি ++> ভাষা> সি ++ ভাষার মান)

  • আইএসও সি ++ 14 স্ট্যান্ডার্ড। এমএসভিসি কমান্ড লাইন বিকল্প:/std:c++14
  • আইএসও সি ++ 17 স্ট্যান্ডার্ড। এমএসভিসি কমান্ড লাইন বিকল্প:/std:c++17
  • সর্বশেষ খসড়া মানক এমএসভিসি কমান্ড লাইন বিকল্প:/std:c++latest

(আমি বাজি ধরলাম, একবার সি ++ ২০ বের হয়ে গেলে এবং ভিজ্যুয়াল স্টুডিওর দ্বারা আরও সম্পূর্ণরূপে এটি সমর্থিত হবে /std:c++20)


3
সিনট্যাক্স -std:c++14, -std:c++17এবং -std:c++latestএছাড়াও কাজ করে, যেমন যখন আপনি নিজে কম্পাইলার অপশন (VS2017 সাথে পরীক্ষিত) প্রবেশ করতে পছন্দ করেন।
রুই ড্যানটন

এটি ইতিমধ্যে উত্তর থেকে পরিষ্কার নয়, বা আপনি আমার তালিকাভুক্ত সুইচগুলির -পরিবর্তে নির্দিষ্টভাবে বলতে চান /std:?
জোহান লন্ডবার্গ

3
থেকে gccবা আসার সময় আমি সুবিধাটি দেখতে পাচ্ছি clang। তারপরে এটি -কম অনুপ্রবেশকারী (তবে সিনট্যাক্সটি এখনও কিছুটা আলাদা ( :পরিবর্তে =))।
রুই ড্যান্টন

প্রকল্পের বৈশিষ্ট্যগুলিতে পেতে ভিএস 2019-তে, "সলিউশন এক্সপ্লোরার" এ যান, প্রকল্পের শিরোনামে ডান ক্লিক করুন এবং সম্পত্তি নির্বাচন করুন। তারপরে এই পোস্টের দিকনির্দেশগুলি অনুসরণ করুন।
বাবরবাগ

1
@AndreiKrasutski। এখনও কোনও আইএসও সি ++ 20 নেই তবে কিছুটা স্ট্যান্ডার্ড: সি ++ এ সর্বশেষ। C ++ 20 স্ট্যান্ডার্ডটি পরের বছর প্রত্যাশিত। আমি আমার উত্তরে একটি মন্তব্যে সম্পাদনা করেছি।
জোহান লন্ডবার্গ

31

এমএস বিল্ড (ভিজ্যুয়াল স্টুডিও প্রকল্প / সমাধান * .vcproj / *। স্লেন ) :

প্রকল্প সেটিংসে অতিরিক্ত বিকল্পগুলিতে যুক্ত করুন: /std:c++latestসর্বশেষ বৈশিষ্ট্যগুলি সক্ষম করতে - বর্তমানে ভিএস2017 হিসাবে সি ++ 17, ভিএস2015 আপডেট 3।

https://blogs.msdn.microsoft.com/vcblog/2016/06/07/standards-version-switches-in-the-compiler/

/permissive- অ-মানক সি ++ এক্সটেনশনগুলি অক্ষম করবে এবং ভিএস2017 এ স্ট্যান্ডার্ড কনফারেন্স সক্ষম করবে।

https://blogs.msdn.microsoft.com/vcblog/2016/11/16/permissive-switch/

সম্পাদনা (অক্টোবর 2018): সর্বশেষতম ভিএস2017 বৈশিষ্ট্যগুলি এখানে ডকুমেন্টেড রয়েছে:

https://docs.microsoft.com/en-gb/cpp/build/reference/std-specify-language-standard-version

ভিএস2017 সমর্থন করে: /std:[c++14|c++17|c++latest]এখন। এই পতাকাগুলি প্রকল্পের সম্পত্তি পৃষ্ঠাগুলির মাধ্যমে সেট করা যেতে পারে:

এই সংকলক বিকল্পটি ভিজ্যুয়াল স্টুডিও বিকাশের পরিবেশে সেট করতে

  1. প্রকল্পের সম্পত্তি পৃষ্ঠা ডায়ালগ বাক্সটি খুলুন। বিশদের জন্য, প্রকল্পের বৈশিষ্ট্যগুলির সাথে কাজ করা দেখুন।
  2. কনফিগারেশন বৈশিষ্ট্য, সি / সি ++, ভাষা নির্বাচন করুন।
  3. সি ++ ভাষা স্ট্যান্ডার্ডে, ড্রপডাউন নিয়ন্ত্রণ থেকে সমর্থন করার জন্য ভাষা মান চয়ন করুন, তারপরে আপনার পরিবর্তনগুলি সংরক্ষণ করতে ঠিক আছে বা প্রয়োগ করুন।

সিএমকে :

ভিজ্যুয়াল স্টুডিও 2017 (15.7+) সিএমকে প্রকল্পগুলি সমর্থন করে। সিএমকে বিভিন্ন উপায়ে আধুনিক সি ++ বৈশিষ্ট্য সক্ষম করে তোলে। সর্বাধিক প্রাথমিক বিকল্পটি 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
)

আমি আমার ভিএস ২০১7 এ ড্রপডাউনটি করেছি তবে এখনও সংকলক সি ++ 98 স্ট্যান্ডার্ড প্রয়োগ করছে, কি হ্যাক
ট্র্যাভিস সু

10

5

যদি বিদ্যমান ভিজ্যুয়াল স্টুডিও 2015 সমাধানটি ভিজ্যুয়াল স্টুডিও 2017 এ নিয়ে আসে এবং আপনি এটি সি ++ 17 নেটিভ সংকলক দিয়ে তৈরি করতে চান তবে আপনাকে প্রথমে সমাধান / প্রকল্পগুলি v141 এ পুনরায় চালু করতে হবে, তারপরে ড্রপডাউন উপরে বর্ণিত হিসাবে প্রদর্শিত হবে (কনফিগারেশন বৈশিষ্ট্য -> সি / সি ++ -> ভাষা -> ভাষার মান)


2

ভিজ্যুয়াল স্টুডিও 2019 সংস্করণ:

ড্রপ ডাউন মেনুতে সরানো হয়েছে:

  • প্রকল্পে ডান ক্লিক করুন (সমাধান নয়)
  • বৈশিষ্ট্য (বা Alt + এন্টার)
  • বাম মেনু থেকে কনফিগারেশন বৈশিষ্ট্য নির্বাচন করুন
  • সাধারণ
  • মাঝখানে "C ++ ভাষা স্ট্যান্ডার্ড" নামে একটি বিকল্প রয়েছে
  • এর পাশেই রয়েছে ড্রপ ডাউন মেনু
  • এখানে আপনি ডিফল্ট, আইএসও সি ++ 14, 17 বা সর্বশেষ নির্বাচন করতে পারেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.