Ditionতিহ্যগতভাবে, সি ++ এ একাধিক শিরোনাম অন্তর্ভুক্তি এড়ানোর স্ট্যান্ডার্ড এবং পোর্টেবল উপায় হ'ল / ম্যাক্রো-গার্ড স্কিম#ifndef - #define - #endif
নামে পরিচিত প্রাক-সংকলক নির্দেশিকা স্কিমটি ব্যবহার করা ছিল (নীচে কোড স্নিপেট দেখুন)।
#ifndef MY_HEADER_HPP
#define MY_HEADER_HPP
...
#endif
বেশিরভাগ বাস্তবায়ন / সংকলকগুলিতে (নীচের চিত্রটি দেখুন) তবে আরও একটি "মার্জিত" বিকল্প রয়েছে যা ম্যাক্রো-গার্ড প্রকল্প হিসাবে ডাকা একই উদ্দেশ্যে কাজ করে #pragma once
। #pragma once
কম কোড, নাম সংঘর্ষ এড়ানো এবং কখনও কখনও সংকলনের গতি উন্নত সহ ম্যাক্রো-গার্ড স্কিমের তুলনায় বেশ কয়েকটি সুবিধা রয়েছে।
কিছু গবেষণা করে, আমি বুঝতে পেরেছিলাম যে যদিও #pragma once
নির্দেশটি প্রায় সমস্ত পরিচিত সংকলক দ্বারা সমর্থিত হয় তবে নির্দেশটি #pragma once
সি ++ 11 মানের অংশ কিনা তা নিয়ে একটি অশান্তি রয়েছে ।
প্রশ্নাবলী:
#pragma once
নির্দেশিকাটি সি ++ 11 মানের অংশ কিনা তা কি কেউ স্পষ্ট করতে পারেন?- যদি এটি সি ++ 11 স্ট্যান্ডার্ডের অংশ না হয় তবে পরবর্তী রিলিজগুলিতে এটি অন্তর্ভুক্ত করার কোনও পরিকল্পনা রয়েছে (যেমন, সি ++ 14 বা তার পরে)?
- যদি কেউ কৌশলগুলির (যেমন ম্যাক্রো-গার্ড বনাম
#pragma once
) কোনও একটির ব্যবহারের সুবিধাগুলি / অসুবিধাগুলি সম্পর্কে আরও বিস্তারিতভাবে বর্ণনা করতে পারে তবে এটিও দুর্দান্ত হবে ।
#pragma once
সাধারণত হয় না।