আপডেট - এই উত্তরটি যদিও আমার এবং অন্যদের কাছে বোধগম্য মনে হয়েছিল, তবে এটি বেশিরভাগ ক্ষেত্রেই ভুল হতে পারে (এবং অভিপ্রায়টি সম্পর্কে যথেষ্ট পরিমাণে ভুল, কার্যকরভাবে কেবল সরল ভুল হিসাবে বিবেচিত হয়)। যেহেতু (এপ্রোগ্রামার একটি মন্তব্যে উল্লেখ করেছেন) স্ট্রিং ধ্রুবকগুলির বাইরে ইউসিএস ব্যবহারের অনুমতি দেওয়া হয় না যখন একই অক্ষরটি বেস চরিত্রের সেটগুলিতে সাধারণত প্রতিনিধিত্ব করা যায়। সুতরাং, কীওয়ার্ডগুলি এড়ানোর জন্য এটি ব্যবহার করে না, যেমন আমার উদাহরণ হিসাবে; এবং এটির 23skiddo
দ্বারা পালিয়ে যাওয়ার মতো 'সনাক্তকারী' তৈরি করতে কোনও ব্যবহার করে না2
। এটি এখনও বাহ্যিক ভাষার সাথে নামগুলিকে সামঞ্জস্য করতে ব্যবহৃত হতে পারে, আমার ধারণা, তবে কেবল মনে হয়, যখন সেই নামগুলি কোনও বর্ণ বা বর্ধিত অক্ষর দিয়ে শুরু হয় এবং কেবল অক্ষর, সংখ্যা, আন্ডারলাইন এবং প্রসারিত অক্ষর থাকে - যা কোন সঠিকভাবে সেই অভিপ্রায়টিকে সমর্থন করতে অনেক বেশি সীমাবদ্ধ বলে মনে হচ্ছে। সুতরাং এটি অবশ্যই হবে যে মূল উদ্দেশ্যটি (এপ্রোগ্রামার এর উত্তর হিসাবে) শনাক্তকারীগুলিতে এই অতিরিক্ত অক্ষরগুলিকে মঞ্জুরি দেওয়ার জন্য এবং উত্স সম্পাদকদের সক্ষম করার জন্য যেখানে এই অক্ষরগুলি গ্রাফিকালি প্রদর্শিত হয়, তবুও উত্স ফাইলটি সরল ASCII তে রাখার অনুমতি দেয়।
সি ++ প্রোগ্রামগুলি অন্যান্য ভাষায় লিখিত ফাংশনগুলিতে কল করতে পারে। মানককরণ কমিটির পক্ষ থেকে এটি নিশ্চিত করা ভাল কৌশল যে সি ++ অন্য ভাষার সাথে আন্তঃযোগযোগ্য হবে যা ফাংশন নামগুলিতে অ-অক্ষর বা ইউনিকোড অক্ষরগুলিকে মঞ্জুরি দিতে পারে, এমনকি যদি এ জাতীয় ভাষা এখনও বিদ্যমান না থাকে। এটি কীভাবে লিঙ্কার স্তরে ইত্যাদি কাজ করবে ইত্যাদি স্ট্যান্ডার্ডকে নির্দিষ্ট করার দরকার নেই; তবে এটির অনুমতি দেওয়ার জন্য একটি নির্দিষ্ট পদ্ধতি থাকা ভাল।
এর ব্যবহার দেখতে আপনাকে ভবিষ্যতের দিকে তাকাতে হবে না। ধরুন আমার একটি পুরানো সি লাইব্রেরি রয়েছে যার একটি ফাংশন রয়েছে catch
(বা সুরক্ষিত, বা পরিবর্তনযোগ্য) ... এবং আমি এটি সি ++ থেকে কল করতে চাই। এবং যে কারণে আমি সি কোডটি সংশোধন করতে পারি না বা করতে চাই না (যাই হোক না কেন, আমাকে পুরানো সি কোডের সাথে একাধিকবার ডিল করতে হয়েছিল যা একটি ফাংশন নাম ব্যবহার করেছে যা সি ++ কীওয়ার্ড হয়ে গেছে ...)
ইউসি নাম দিয়ে আমি এটি একটি হেডারে লিখতে পারি এবং তারপরে কেবল 'ক্যাচ_ফানস ()' কল করতে পারি:
extern "C" {
int catc\u0068( int a, int b ); // C 'catch()' function
}
inline int catch_func( int a, int b ) { return catc\u0068(a,b); }
নিশ্চিতভাবেই এটি কুরুচিপূর্ণ, তবে এটি শিরোনামের এক জায়গায় কেবল যেহেতু তা গুরুত্বপূর্ণ নয়। অন্যান্য ভাষায় ফাংশনগুলি কল করতে স্টাবগুলি তৈরি করতে একই পন্থাটি ব্যবহার করা যেতে পারে এবং নামগুলি সি ++ কীওয়ার্ড বা ইউনিকোড, এমনকি ফাঁকা স্থান .
বা অন্য বিরামচিহ্ন এম্বেড থাকা সত্ত্বেও কাজ করে
অন্যান্য বিভিন্ন ভাষায় এমন ডিভাইস রয়েছে যা সনাক্তকারী তৈরি করতে দেয় যা সাধারণ প্যাটার্ন অনুসরণ করে না; উদাহরণস্বরূপ ভেরিলোগে, \abcd
এটি একটি শনাক্তকারী সমতুল্য abcd
, \while
এবং \23skidoo
এবং \44.e2
শনাক্তকারীও খুব বেশি, যা ব্যাকস্ল্যাশ উপসর্গটি এরূপ হিসাবে দেখা দরকার। ভেরিলগ যে পদ্ধতিতে ব্যবহৃত হয় তার কারণে, কোনও নামই একেবারে মঞ্জুরি দেওয়া গুরুত্বপূর্ণ, যেখানে তারা বাহ্যিক ইন্টারফেসের সাথে সম্পর্কিত।