আমি কিছু ওপেন সোর্স সি ++ কোড দিয়ে দেখেছিলাম এবং কোডটিতে ব্যবহৃত মূলত ভেরিয়েবলের নামের শুরুতে প্রচুর ডাবল লক্ষ্য করেছি।
return __CYGWIN__;
শুধু ভাবছি এর কারণ আছে কি, নাকি এটি কিছু লোকের কোড শৈলী? আমি ভাবতে পারি যে এটি পড়তে আমার কষ্ট হয়।
আমি কিছু ওপেন সোর্স সি ++ কোড দিয়ে দেখেছিলাম এবং কোডটিতে ব্যবহৃত মূলত ভেরিয়েবলের নামের শুরুতে প্রচুর ডাবল লক্ষ্য করেছি।
return __CYGWIN__;
শুধু ভাবছি এর কারণ আছে কি, নাকি এটি কিছু লোকের কোড শৈলী? আমি ভাবতে পারি যে এটি পড়তে আমার কষ্ট হয়।
#define FOO 1
তবে তাদের অবশ্যই করা উচিত নয় #define __FOO__ 1
এবং তাই প্রয়োগটি __FOO__
নিজের ম্যাক্রো, ভেরিয়েবল, ফাংশন ইত্যাদির জন্য নামটি ব্যবহার করতে পারে
উত্তর:
সি ++, বিধি এবং সুপারিশগুলিতে প্রোগ্রামিং থেকে :
শনাক্তকারীগুলিতে দুটি আন্ডারস্কোর (__ __ ') ব্যবহার এএনএসআই-সি স্ট্যান্ডার্ড অনুযায়ী সংকলকটির অভ্যন্তরীণ ব্যবহারের জন্য সংরক্ষিত।
অ্যান্ডস্কোর (`_ ') প্রায়শই গ্রন্থাগারের ফাংশনগুলির নামে ব্যবহৃত হয় (যেমন" _ মেইন "এবং" _ইজিকিট ")। সংঘর্ষ এড়ানোর জন্য, আন্ডারস্কোর দিয়ে কোনও সনাক্তকারী শুরু করবেন না।
namespace
হয়েছিল।
_main
।
তারা যদি না অনুভব করে যে তারা "বাস্তবায়নের অংশ", অর্থাৎ মানক গ্রন্থাগার, তবে তাদের উচিত নয় they
নিয়মগুলি মোটামুটি সুনির্দিষ্ট, এবং কিছু অন্যদের পরামর্শের তুলনায় কিছুটা বিশদ।
যে সমস্ত শনাক্তকারী ডাবল আন্ডারস্কোর ধারণ করে বা একটি আন্ডারস্কোর অনুসরণ করে বড় হাতের অক্ষর অনুসরণ করে তা সমস্ত স্কোপগুলিতে প্রয়োগের ব্যবহারের জন্য সংরক্ষিত থাকে, যেমন এগুলি ম্যাক্রোর জন্য ব্যবহৃত হতে পারে।
এছাড়াও, আন্ডারস্কোর দিয়ে শুরু হওয়া অন্যান্য সমস্ত শনাক্তকারী (অর্থাত্ অন্য আন্ডারস্কোর বা বড় হাতের অক্ষর দ্বারা অনুসরণ করা হয় না) বিশ্বব্যাপী প্রয়োগের জন্য সংরক্ষিত। এর অর্থ হ'ল আপনি এই শনাক্তকারীগুলিকে আপনার নিজের নামের জায়গাগুলিতে বা শ্রেণি সংজ্ঞাতে ব্যবহার করতে পারেন।
এই কারণেই মাইক্রোসফ্ট তাদের মূল রানটাইম লাইব্রেরি ফাংশনগুলির জন্য একটি শীর্ষস্থানীয় আন্ডারস্কোর এবং সমস্ত ছোট হাতের অক্ষরের সাথে ফাংশন নামগুলি ব্যবহার করে যা সি ++ মানের অংশ নয়। এই ফাংশনটির নামগুলি স্ট্যান্ডার্ড সি ++ ফাংশন বা ব্যবহারকারী কোড ফাংশনগুলির সাথে সংঘর্ষ না করার গ্যারান্টিযুক্ত।
সি ++ স্ট্যান্ডার্ড অনুসারে, একটি আন্ডারস্কোর দিয়ে শুরু হওয়া সনাক্তকারীগুলি লাইব্রেরির জন্য সংরক্ষিত। দুটি আন্ডারস্কোর দিয়ে শুরু করা শনাক্তকারীগুলি সংকলক বিক্রেতাদের জন্য সংরক্ষিত।
পূর্বোক্ত মন্তব্যগুলি সঠিক। __Symbol__
সাধারণত আপনার সহায়ক সংকলক (বা প্রিপ্রোসেসর) বিক্রেতা দ্বারা সরবরাহ করা একটি যাদু টোকেন। সম্ভবত এগুলির মধ্যে সর্বাধিক ব্যবহৃত হয় __FILE__
এবং __LINE__
যা বর্তমান ফাইলের নাম এবং লাইন নম্বর নির্দেশ করতে সি প্রিপ্রসেসর দ্বারা প্রসারিত হয়। আপনি যখন ত্রুটির পাঠ্য অবস্থান সহ কোনও প্রকারের প্রোগ্রামের ব্যর্থতা লগ করতে চান তখন তা সহজ।
শীর্ষে ভোট দেওয়া উত্তর C ++ এ প্রোগ্রামিংয়ের উদ্ধৃতি দেয় : বিধি এবং প্রস্তাবনা :
"শনাক্তকারীগুলিতে দুটি আন্ডারস্কোর (` __ ') ব্যবহার এএনএসআই-সি স্ট্যান্ডার্ড অনুযায়ী সংকলকের অভ্যন্তরীণ ব্যবহারের জন্য সংরক্ষিত। "
যাইহোক, কয়েকটি সি ++ এবং সি স্ট্যান্ডার্ড পড়ার পরে, আমি কেবলমাত্র সংকলকের অভ্যন্তরীণ ব্যবহারের মধ্যে সীমাবদ্ধ আন্ডারস্কোরগুলির কোনও উল্লেখ খুঁজে পাইনি । মানগুলি আরও সাধারণ, বাস্তবায়নের জন্য ডাবল আন্ডারস্কোর সংরক্ষণ করে ।
সি ++ (বর্তমান কার্যকরী খসড়া, 2019-5-26 অ্যাক্সেস করা হয়েছে) এতে উল্লেখ করেছে lex.name
:
- প্রতিটি সনাক্তকারী যাতে ডাবল আন্ডারস্কোর __ থাকে বা আন্ডারস্কোর দিয়ে শুরু হয় বড় অক্ষর দ্বারা অনুসরণ করা হয় কোনও ব্যবহারের জন্য প্রয়োগের জন্য সংরক্ষিত।
- আন্ডারস্কোর দিয়ে শুরু হওয়া প্রতিটি শনাক্তকারী গ্লোবাল নেমস্পেসে নাম হিসাবে ব্যবহারের জন্য প্রয়োগের জন্য সংরক্ষিত।
যদিও এই প্রশ্নটি সি ++ এর সাথে সুনির্দিষ্ট, আমি সি স্ট্যান্ডার্ড 99 এবং 17 থেকে প্রাসঙ্গিক বিভাগগুলি উদ্ধৃত করেছি:
C99 বিভাগ 7.1.3
- আন্ডারস্কোর এবং যেহেতু বড় হাতের অক্ষর বা অন্য কোনও আন্ডারস্কোর দিয়ে শুরু হওয়া সমস্ত সনাক্তকারী সর্বদা যে কোনও ব্যবহারের জন্য সংরক্ষিত।
- আন্ডারস্কোর দিয়ে শুরু হওয়া সমস্ত সনাক্তকারী সাধারণ এবং ট্যাগের নাম উভয় জায়গাতেই ফাইল স্কোপ সহ সনাক্তকারী হিসাবে ব্যবহারের জন্য সংরক্ষিত থাকে।
সি / সি জন্য ++ বাস্তবায়ন ঢিলেঢালাভাবে ব্যবহারকারীর কাছে উৎস ফাইল থেকে একটি এক্সিকিউটেবল উত্পাদন করতে প্রয়োজনীয় সেট সম্পদ বোঝায়। এটা অন্তর্ভুক্ত:
উইকিপিডিয়ায় বিভিন্ন সি ++ প্রয়োগের উল্লেখ রয়েছে । (কোনও অ্যাঙ্কর লিঙ্ক নেই, সিটিআরএল + এফ "বাস্তবায়ন")
অন্যান্য অনেক লোক গ্রন্থাগারগুলি ছাড়াও যা সম্পর্কে প্রতিক্রিয়া জানিয়েছিল, কিছু লোক প্রিপ্রসেসর ব্যবহারের জন্য ম্যাক্রো বা # নির্ধারিত মানগুলির নামও দেয়। এটি এর সাথে কাজ করা সহজ করবে এবং পুরানো সংকলকগুলিতে বাগগুলি প্রায় কাজ করার অনুমতি দিতে পারে।
উল্লিখিত অন্যদের মতো, এটি নামের সংঘর্ষ রোধ করতে সহায়তা করে এবং গ্রন্থাগার ভেরিয়েবল এবং আপনার নিজস্বগুলির মধ্যে চিত্রিত করতে সহায়তা করে।