সি এর জন্য, সি প্রোগ্রামিং ল্যাঙ্গুয়েজের প্রথম সংস্করণ (ওরফে কেএন্ডআর) প্রস্তাব দেয় যে প্রিপ্রোসেসর ম্যাক্রোগুলি সম্পর্কে আপনার স্বজ্ঞাততা সঠিক:
প্রতীকী ধ্রুবক নামগুলি সাধারণত বড় হাতের অক্ষরে লেখা থাকে যাতে এগুলি সহজেই লোয়ার কেসের পরিবর্তনশীল নামগুলি থেকে আলাদা করা যায়।
বিভিন্ন উপায়ে, এটি সমাবেশ ভাষা থেকে একটি হোল্ডওভার ছিল, যেখানে ম্যাক্রোগুলি লেবেল, অপকডগুলি, নামগুলি নিবন্ধকরণ এবং অন্য সব কিছুর সাথে বড় হাতের মধ্যে সংজ্ঞায়িত করা হয়েছিল। এটি অ্যান্ড টি-স্টাইলের সমাবেশের আবির্ভাব কিছু প্ল্যাটফর্মে পরিবর্তিত হয়েছিল, তবে আমি মনে করি যে এটি লোকেসকে সমর্থনকারী টার্মিনালগুলি একটি জিনিস হয়ে উঠছিল এবং ইউনিক্স বলে আমি "লোয়ারকেস অপারেটিং সিস্টেম" বলব by
অন্য দুটি পয়েন্টে, আপনি ব্যাটিং করছেন। 500:
Enum
দ্বিতীয় সংস্করণ প্রকাশিত হওয়ার পরে, enum
এর সংজ্ঞা দেওয়া হয়েছিল, তাদেরকে গণনার ধ্রুবক হিসাবে উল্লেখ করা হয়েছিল এবং ধ্রুবকগুলির বিভাগে আবৃত করা হয়েছিল। কারণ একটি দ্বারা সংজ্ঞায়িত ধ্রুবকগুলি enum
প্রতীক দ্বারা প্রতিনিধিত্ব করা হয়, এটি তাদেরকে প্রতীকী ধ্রুবক করে তোলে, যা আপনি যদি প্রস্তাবিত কনভেনশন অনুসরণ করতে চলেছেন তবে বড় হাতের মধ্যে নামকরণ করা উচিত। (প্রিপ্রোসেসর ম্যাক্রোগুলির মতো কিছুই অন্যথায় আপনাকে থামিয়ে দেয় না))
এখানে বোঝা যাচ্ছে যে কয়েকটি ভাষা অনুসরণ করেছে তার পরে সি সি enum
প্রথম শ্রেণীর ধরণের হিসাবে বিবেচনা করে না যেখানে প্রকারগুলি স্বতন্ত্র পৃথক, গণনার মান প্রতিটি প্রকারের সাথে সুনির্দিষ্ট এবং অন্যগুলিতে পুনরায় ব্যবহৃত হতে পারে। পরিবর্তে, এটি কার্যকরভাবে একটি সুবিধাজনক শর্টহ্যান্ড #define
যা সংযুক্ত শনাক্তকারীদের সাথে পূর্ণসংখ্যার ক্রম উত্পাদন করে। এটা তৈরি করে
enum foo { BAR, BAZ };
enum quux { BLETCH, BAZ };
অবৈধ কারণ সমস্ত প্রতীক স্কোপ ভাগ করে এবং BAZ
পুনরায় সংজ্ঞায়িত করা হয়। (এটি প্রিপ্রোসেসরের চেয়ে উন্নতি ছিল যা, সেই সময়ে, একজনকে #define
অন্যজনকে ক্লোবারিংয়ের বিষয়ে সতর্ক করে দেয়নি ।) আরও, সি তাদের যত্ন করে না আপনি সেগুলি মিশ্রিত করেন কারণ তারা সবাই কেবলমাত্র পূর্ণসংখ্যা, তৈরি করছে
enum foo { BAR, BAZ };
enum quux { BLETCH, BLRFL };
enum foo variable = BLETCH;
এমনকি সমস্ত আধুনিক সতর্কতা চালু করে একটি আধুনিক সংকলক এমনকি সম্পূর্ণ বৈধ।
const
এনবি: const
কীওয়ার্ডটির উৎপত্তি 1981 সালে স্ট্রোস্ট্রপের সি উইথ ক্লাস (যা সি ++ তে বিবর্তিত হয়েছিল) দিয়ে হয়েছিল এবং শেষ পর্যন্ত সি দ্বারা গৃহীত হয়েছিল নামটির পছন্দটি দুর্ভাগ্যজনক, কারণ এটি কে ও আর এর ধ্রুবক শব্দটির ব্যবহারের সাথে সংঘাতযুক্ত যার অর্থ এখন আমরা কী বলব? আক্ষরিক (যেমন 38
,, 'x'
বা "squabble"
)। দ্বিতীয় সংস্করণে লেখাটি প্রতিফলিত করার জন্য নতুন করে লেখা হয়নি।
ঘোষিত ভেরিয়েবলগুলি const
আলাদা গল্প কারণ তারা এখনও ভেরিয়েবল। এগুলিকে সংশোধন করার কথা নয়, তবে ধ্রুবক পরিবর্তনশীলের ধারণাটি আরও বলার অপেক্ষা রাখে না যে, বলুন, জাম্বো চিংড়ি অন্য একটি আলোচনার জন্য চারণ। যাই হোক না কেন, সি কখনই এটি সম্পর্কে সত্যই গুরুতর ছিল না কারণ স্ট্যান্ডার্ডটির কেবল প্রয়োজন যখন সংকলক একটি ডায়াগনস্টিক নির্গত করে যখন আপনি কোনও পরিবর্তন করার চেষ্টা করেন। কোনও পরিবর্তন সংকলিত এবং কার্যকর করা হলে প্রকৃত আচরণটি অপরিজ্ঞাত।
ভেরিয়েবল হওয়ায় এটি বোঝা যায় যে কোনও কিছুই const
ছোট হাতের নামকরণের সম্মেলন অনুসরণ করবে। তাদেরকে আক্ষরিক উপস্থাপনের জন্য কিছু ধরণের সুরক্ষা সুবিধা রয়েছে তবে মানটি পেতে যদি আপনাকে সংকলন ইউনিটের মধ্যে পৌঁছতে হয় তবে ভাল অপ্টিমাইজেশনের জন্য এটি তৈরি করে না।
যা তারা নয় তা কে ও আর অর্থে ধ্রুবক এবং সেই কারণে তাদের শনাক্তকারীদের বড় হাতের হওয়া উচিত নয়। কিছু লোক সেগুলি সেভাবে ব্যবহার করে তবে কয়েকটি নির্দিষ্ট ক্ষেত্রে বাদে আমি এটি ব্যবহার করার পরামর্শ দিই না।
const
শনাক্তকারীদের লোয়ার কেস এবং#defines
উচ্চতর হিসাবে দেখায় । জাভা যদিও ধ্রুবক এবং অন্যান্য ভাষাগুলির জন্য উপরের কেস গ্রহণ করেছে, তবে আমার শেষেরটি ভুল হতে পারে। আরও গবেষণা প্রয়োজন! :)