বাজার্ন স্ট্রস্ট্রপ সি ++ 0 এক্স এফএকিউ :
__cplusplus
সি ++ 0 এক্সে ম্যাক্রো __cplusplus
একটি মানকে সেট করা হবে যা বর্তমানের চেয়ে পৃথক (এর চেয়ে বড়) 199711L
।
যদিও এটি যেমনটি চান তেমন সহায়ক নয়। gcc
(দৃশ্যত প্রায় 10 বছর ধরে) এই মানটি সেট করা ছিল 1
, একটি বড় সংকলককে বাতিল করে দিয়েছিল, যতক্ষণ না এটি জিসিসি ৪.7.০ প্রকাশের সময় নির্ধারিত হয় ।
এগুলি হ'ল সি ++ স্ট্যান্ডার্ড এবং কোন মানটি আপনার কাছে আশা করতে সক্ষম হওয়া উচিত __cplusplus
:
- সি ++ প্রাক-সি ++ 98:
__cplusplus
হয় 1
।
- সি ++ 98:
__cplusplus
হয় 199711L
।
- সি ++ 98 + টিআর 1: এটি সি ++ 98 হিসাবে পড়ে এবং আমি জানি এটি চেক করার কোনও উপায় নেই।
- সি ++ 11:
__cplusplus
হয় 201103L
।
- সি ++ 14:
__cplusplus
হয় 201402L
।
- সি ++ 17:
__cplusplus
হয় 201703L
।
যদি সংকলকটি আরও পুরানো হতে পারে তবে gcc
আমাদের নির্দিষ্ট হ্যাকারি সংকলন করতে হবে (একটি সংস্করণ ম্যাক্রোটি দেখুন, এটি প্রয়োগিত বৈশিষ্ট্যযুক্ত একটি টেবিলের সাথে তুলনা করুন) বা বুস্ট.কনফিগ (যা প্রাসঙ্গিক ম্যাক্রোগুলি সরবরাহ করে ) ব্যবহার করুন। এর সুবিধাটি হ'ল আমরা প্রকৃতপক্ষে নতুন স্ট্যান্ডার্ডের নির্দিষ্ট বৈশিষ্ট্যগুলি চয়ন করতে পারি, এবং বৈশিষ্ট্যটি অনুপস্থিত থাকলে একটি কর্মপদ্ধতি লিখতে পারি। এটি প্রায়শই হোলসেল সলিউশনের তুলনায় বেশি পছন্দ করা হয়, কারণ কিছু সংকলক সি ++ 11 বাস্তবায়নের দাবি করবেন তবে কেবলমাত্র বৈশিষ্ট্যগুলির একটি উপসেট অফার করবেন।
Stdcxx উইকি সি ++ 0x বৈশিষ্ট্যগুলির সংকলক সমর্থনের জন্য একটি বিস্তৃত ম্যাট্রিক্স হোস্ট করে (যদি আপনি নিজে বৈশিষ্ট্যগুলি খতিয়ে দেখার সাহস করেন)।
দুর্ভাগ্যক্রমে, বৈশিষ্ট্যগুলির জন্য আরও সূক্ষ্ম-পরীক্ষাযুক্ত পরীক্ষা করা (যেমন পৃথক লাইব্রেরির ফাংশনগুলি std::copy_if
) কেবলমাত্র আপনার অ্যাপ্লিকেশনটির বিল্ড সিস্টেমে করা যেতে পারে (বৈশিষ্ট্যটির সাথে চালানো কোড, এটি পরীক্ষা করে সঠিক ফলাফল তৈরি করেছে কিনা তা যাচাই করে নিন - autoconf
যদি গ্রহণ করা হয় তবে পছন্দের সরঞ্জাম এই রুট)।