সি ++ সনাক্তকারীতে আন্ডারস্কোর ব্যবহার সম্পর্কে কী বিধি রয়েছে?


930

স্থানীয় ভেরিয়েবল বা প্যারামিটারের পরিবর্তে তারা সদস্য ভেরিয়েবল হ'ল এই সত্যটি বোঝাতে সি ++ তে কিছু ধরণের উপসর্গের সাথে সদস্য ভেরিয়েবলের নাম দেওয়া সাধারণ। আপনি যদি কোনও এমএফসি ব্যাকগ্রাউন্ড থেকে এসেছেন তবে আপনি সম্ভবত ব্যবহার করবেন m_foo। আমি myFooমাঝে মাঝে দেখেছি ।

সি # (বা সম্ভবত কেবল। নেট) কেবলমাত্র একটি আন্ডারস্কোর ব্যবহার করার পরামর্শ দিচ্ছে _foo। এটি কি সি ++ স্ট্যান্ডার্ড দ্বারা অনুমোদিত?


3
এ সম্পর্কে গ্লাবসি ম্যানুয়াল পৃষ্ঠাটি gnu.org/software/libc/manual/html_node/Reused-Nems.html সম্পাদনা: এও ওপেনগ্রুপ.আর.ওনলাইনপবস
009695399/

6
কেবলমাত্র উল্লেখ্য যে এই বিধিগুলির অজ্ঞতা অগত্যা আপনার কোডটি সংকলন বা চালিত করবে না তা বোঝায় না, তবে সম্ভবত আপনার কোডটি বিভিন্ন সংকলক এবং সংস্করণে বহনযোগ্য হবে না, কারণ এটি নিশ্চিত করা যায় না যে নাম থাকবে না will সংঘর্ষ। এর ব্যাক আপ করার জন্য আমি একটি গুরুত্বপূর্ণ সিস্টেমের নির্দিষ্ট বাস্তবায়ন সম্পর্কে জানি যা নামকরণ সম্মেলন হিসাবে সর্বত্র _ মূলধনপত্র হিসাবে ব্যবহৃত হচ্ছে। সেখানে এই কারণে কোন ত্রুটি আছে। অবশ্যই এটি খারাপ অভ্যাস।
g24l

উত্তর:


851

বিধিগুলি (যা সি ++ 11 এ পরিবর্তন হয়নি):

  • বাস্তবায়ন ম্যাক্রো হিসাবে ব্যবহারের জন্য সহ যে কোনও সুযোগে সংরক্ষিত :
    • শনাক্তকারীরা আন্ডারস্কোর দিয়ে শুরু করে সাথে সাথে একটি বড় হাতের অক্ষর দ্বারা অনুসরণ করা হয়
    • সংলগ্ন আন্ডারস্কোর (বা "ডাবল আন্ডারস্কোর") ধারণকারী সনাক্তকারী
  • বিশ্বব্যাপী নেমস্পেসে সংরক্ষিত:
    • শনাক্তকারীরা একটি আন্ডারস্কোর দিয়ে শুরু করে
  • এছাড়াও, stdনেমস্পেসের সমস্ত কিছুই সংরক্ষিত। (যদিও আপনাকে টেমপ্লেট বিশেষীকরণের অনুমতি দেওয়া হয়েছে))

2003 সি ++ স্ট্যান্ডার্ড থেকে:

17.4.3.1.2 গ্লোবাল নামগুলি [lib.global.names]

নাম এবং ফাংশন স্বাক্ষরের কয়েকটি সেট সর্বদা প্রয়োগের জন্য সংরক্ষিত থাকে:

  • প্রতিটি নাম যাতে ডাবল আন্ডারস্কোর ( __) থাকে বা একটি আন্ডারস্কোর দিয়ে শুরু হয় তারপরে বড় হাতের অক্ষর (2.11) কোনও ব্যবহারের জন্য প্রয়োগের জন্য সংরক্ষিত থাকে।
  • আন্ডারস্কোর দিয়ে শুরু হওয়া প্রতিটি নাম গ্লোবাল নেমস্পেসে নাম হিসাবে ব্যবহারের জন্য প্রয়োগের জন্য সংরক্ষিত। 165

165) এই ধরনের নাম এছাড়াও নামস্থানে সংরক্ষিত ::std(17.4.3.1)।

কারণ সি ++ সি স্ট্যান্ডার্ড (1.1 / 2, C ++ 03) এর উপর ভিত্তি করে এবং C99 একটি আদর্শ রেফারেন্স (1.2 / 1, C ++ 03) এগুলিও প্রয়োগ হয়, 1999 সি স্ট্যান্ডার্ড থেকে:

7.1.3 সংরক্ষিত সনাক্তকারী

প্রতিটি শিরোনাম তার সম্পর্কিত সাবক্লাউজে তালিকাভুক্ত সমস্ত সনাক্তকারীকে ঘোষণা করে বা সংজ্ঞায়িত করে এবং তার সাথে সম্পর্কিত ভবিষ্যতের গ্রন্থাগারের দিকনির্দেশের সাবক্লাউস এবং শনাক্তকারীদের বৈকল্পিকভাবে ঘোষণা বা সংজ্ঞা দেয় যা সর্বদা কোনও ব্যবহারের জন্য বা ফাইল স্কোপ সনাক্তকারী হিসাবে ব্যবহারের জন্য সংরক্ষিত থাকে reserved

  • আন্ডারস্কোর এবং যেহেতু বড় হাতের অক্ষর বা অন্য কোনও আন্ডারস্কোর দিয়ে শুরু হওয়া সমস্ত সনাক্তকারী সর্বদা যে কোনও ব্যবহারের জন্য সংরক্ষিত।
  • আন্ডারস্কোর দিয়ে শুরু হওয়া সমস্ত সনাক্তকারী সাধারণ এবং ট্যাগের নাম উভয় জায়গাতেই ফাইল স্কোপ সহ সনাক্তকারী হিসাবে ব্যবহারের জন্য সংরক্ষিত থাকে।
  • নিম্নলিখিত যেকোন উপক্লাজের প্রতিটি ম্যাক্রো নাম (ভবিষ্যতের গ্রন্থাগারের দিকনির্দেশ সহ) নির্দিষ্টভাবে ব্যবহারের জন্য সংরক্ষিত রয়েছে যদি এর সম্পর্কিত কোনও শিরোনাম অন্তর্ভুক্ত থাকে; স্পষ্টভাবে অন্যথায় না বলা হয়েছে (দেখুন 7.1.4)।
  • নিম্নলিখিত যেকোন উপক্লাজের (ভবিষ্যতের গ্রন্থাগারের দিকনির্দেশ সহ) বাহ্যিক সংযোগ সহ সমস্ত সনাক্তকারী সর্বদা বহিরাগত সংযোগ সহ সনাক্তকারী হিসাবে ব্যবহারের জন্য সংরক্ষিত। 154
  • নিম্নলিখিত যেকোন উপক্লাজে তালিকাভুক্ত ফাইল স্কোপ সহ প্রতিটি শনাক্তকারী (ভবিষ্যতের লাইব্রেরির দিকনির্দেশগুলি সহ) ম্যাক্রো নাম হিসাবে ব্যবহারের জন্য এবং এর সাথে সম্পর্কিত কোনও শিরোনাম অন্তর্ভুক্ত করা হলে একই নামের জায়গাতে ফাইল স্কোপ সহ সনাক্তকারী হিসাবে সংরক্ষিত।

অন্য কোনও শনাক্তকারী সংরক্ষিত নেই। প্রোগ্রামটি যদি এমন কোনও প্রেক্ষাপটে কোনও শনাক্তকারীকে ঘোষনা করে বা সংজ্ঞায়িত করে (7.1.4 অনুসারে অনুমোদিত ব্যতীত), বা কোনও সংরক্ষিত শনাক্তকারীকে ম্যাক্রো নাম হিসাবে সংজ্ঞায়িত করে, তবে আচরণটি সংজ্ঞায়িত নয়।

যদি প্রোগ্রামটি #undefউপরে তালিকাভুক্ত প্রথম গোষ্ঠীর কোনও শনাক্তকারীর কোনও ম্যাক্রো সংজ্ঞা অপসারণ (সাথে ) করে, তবে আচরণটি সংজ্ঞায়িত।

154) বাহ্যিক দুটো ঘটনার সঙ্গে সংরক্ষিত শনাক্তকারী করেন তাদের তালিকা অন্তর্ভুক্ত errno, math_errhandling, setjmp, এবং va_end

অন্যান্য বিধিনিষেধগুলি প্রযোজ্য হতে পারে। উদাহরণস্বরূপ, পসআইএক্স স্ট্যান্ডার্ড প্রচুর পরিমাণে শনাক্তকারী সংরক্ষণ করে যা সম্ভবত স্বাভাবিক কোডে প্রদর্শিত হতে পারে:

  • মূলধন দিয়ে শুরু হওয়া নামগুলি Eএকটি অঙ্ক বা বড় হাতের অক্ষর অনুসরণ করে:
    • অতিরিক্ত ত্রুটি কোড নামের জন্য ব্যবহার করা যেতে পারে।
  • যে নামগুলি শুরু হয় isবা toছোট অক্ষর দ্বারা অনুসরণ করা হয়
    • অতিরিক্ত অক্ষর পরীক্ষা এবং রূপান্তর ফাংশন জন্য ব্যবহৃত হতে পারে।
  • LC_একটি বড় হাতের অক্ষর দ্বারা অনুসরণ করা নামগুলি
    • লোকাল বৈশিষ্ট্যগুলি নির্দিষ্ট করে অতিরিক্ত ম্যাক্রোগুলির জন্য ব্যবহার করা যেতে পারে।
  • সমস্ত বিদ্যমান গণিতের ক্রিয়াগুলির নাম প্রত্যয়িত fবা lসংরক্ষিত আছে
    • সংশ্লিষ্ট ফাংশনগুলির জন্য যা যথাক্রমে ভাসা এবং দীর্ঘ ডবল আর্গুমেন্টগুলিতে কাজ করে।
  • SIGবড় হাতের অক্ষরের পরে শুরু হওয়া নামগুলি সংরক্ষিত থাকে
    • অতিরিক্ত সংকেত নামের জন্য।
  • SIG_বড় হাতের অক্ষরের পরে শুরু হওয়া নামগুলি সংরক্ষিত থাকে
    • অতিরিক্ত সংকেত কর্মের জন্য।
  • শুরু নাম str, memবা wcsএকটি ছোট হাতের অক্ষর দ্বারা অনুসরণ সংরক্ষিত
    • অতিরিক্ত স্ট্রিং এবং অ্যারে ফাংশন জন্য।
  • নামগুলি কোনও ছোট হাতের অক্ষর দিয়ে শুরু হয় PRIবা SCNঅনুসরণ করা হয় বা Xসংরক্ষিত থাকে
    • অতিরিক্ত ফর্ম্যাট নির্দিষ্টকরণকারী ম্যাক্রোগুলির জন্য
  • এর সাথে শেষ হওয়া নামগুলি _tসংরক্ষিত আছে
    • অতিরিক্ত টাইপ নামের জন্য।

এই মুহুর্তে আপনার নিজের উদ্দেশ্যে এই নামগুলি ব্যবহার করার ফলে কোনও সমস্যা নাও হতে পারে, তবে তারা সেই মানটির ভবিষ্যতের সংস্করণগুলির সাথে দ্বন্দ্বের সম্ভাবনা বাড়িয়ে তোলে।


ব্যক্তিগতভাবে আমি কেবল আন্ডারস্কোর দিয়ে সনাক্তকারী শুরু করি না। আমার নিয়মে নতুন সংযোজন: কোথাও ডাবল আন্ডারস্কোর ব্যবহার করবেন না, যা খুব কমই আমি আন্ডারস্কোর ব্যবহার করি বলে এটি সহজ।

এই নিবন্ধটি নিয়ে গবেষণা করার পরে আমি আর আমার পরিচয়কারীদের সাথে আর শেষ করব না কারণ _t এটি পসিক্স মান দ্বারা সংরক্ষিত।

যে কোনও সনাক্তকারী সম্পর্কে বিধিটি _tআমাকে অবাক করে দিয়েছিল। আমি মনে করি যে এটি একটি পসিক্স মান (এখনও নিশ্চিত নয়) স্পষ্টতা এবং অফিসিয়াল অধ্যায় এবং শ্লোকটির সন্ধান করছে। এটি জিএনইউ লিবিটোল ম্যানুয়াল থেকে সংরক্ষিত নাম তালিকাভুক্ত।

সিএসআরবি POSIX 2004 সংরক্ষিত প্রতীক এবং নোটগুলির জন্য নিম্নলিখিত লিঙ্কটি সরবরাহ করেছিল 'অন্যান্য অনেক সংরক্ষিত উপসর্গ এবং প্রত্যয় ... সেখানে পাওয়া যাবে'। POSIX 2008 সংরক্ষিত প্রতীক এখানে সংজ্ঞায়িত করা হয়। উপরেরগুলির তুলনায় বিধিনিষেধগুলি কিছুটা বেশি উপোসযুক্ত।


14
সি ++ স্ট্যান্ডার্ড সিটি "আমদানি" করে না, তাই না? তারা নির্দিষ্ট শিরোনাম আমদানি করে তবে পুরো ভাষা বা নামকরণের নিয়মগুলি যতটা আমি জানি না। তবে হ্যাঁ, _ও আমাকে অবাক করে দিয়েছে। এটি যেহেতু এটি সি, তাই এটি কেবলমাত্র গ্লোবাল এনএস-এ প্রয়োগ করতে পারে। আমি পড়তে পড়তে ক্লাসের ভিতরে _t ব্যবহার করা নিরাপদ হওয়া উচিত
জাল্ফ

27
সি ++ স্ট্যান্ডার্ড সি স্ট্যান্ডার্ডটি "আমদানি" করে না। এটি সি স্ট্যান্ডার্ডের উল্লেখ করে। সি ++ লাইব্রেরির ভূমিকা বলছে "লাইব্রেরিটি স্ট্যান্ডার্ড সি লাইব্রেরির সুবিধাও সরবরাহ করে"। এটি সি স্ট্যান্ডার্ড লাইব্রেরির যথাযথ পরিবর্তন সহ শিরোনামকে অন্তর্ভুক্ত করে এটি "আমদানি" করে নয়। সি ++ স্ট্যান্ডার্ডের একটি নিজস্ব নিয়ম রয়েছে যা সংরক্ষিত নামগুলি বর্ণনা করে। যদি সিতে সংরক্ষিত কোনও নাম সি ++ এ সংরক্ষণ করা উচিত, তবে এটি বলার জায়গা। তবে সি ++ স্ট্যান্ডার্ড এটি বলে না। সুতরাং আমি বিশ্বাস করি না যে সিতে সংরক্ষিত জিনিসগুলি সি ++ এ সংরক্ষিত আছে - তবে আমি ভাল হতে পারি।
জোহানেস স্কাওব -

8
"_T" ইস্যুটি সম্পর্কে এটিই আমি পেয়েছি: n1256 (C99 টিসি 3) বলেছেন: "টাইপডেফের নামগুলি ইন্ট বা ইউন্ট দিয়ে শুরু হবে এবং _t দিয়ে শেষ হবে" are আমি মনে করি যে এখনও "foo_t" এর মতো নাম ব্যবহার করার অনুমতি দেয় - তবে আমার মনে হয় এগুলি পরে পসিক্স দ্বারা সংরক্ষিত।
জোহানেস স্কাওব -

59
সুতরাং 'সহনশীলতা' পজিক্স দ্বারা সংরক্ষিত যেমন এটি 'টু' + একটি ছোট হাতের অক্ষর দিয়ে শুরু হয়? আমি বাজি ধরে প্রচুর কোড ভঙ্গ করি!
সুজয়েরড

23
@ লকিআস্টারি, " সি ++ স্ট্যান্ডার্ডটি সি স্ট্যান্ডার্ডের সাথে সংজ্ঞায়িত করা হয়েছে। মূলত এটি বলে যে এই পার্থক্য এবং সংযোজনগুলির সাথে সি ++ সি হয়। " বাজে! সি ++ কেবলমাত্র [বেসিক.ফান্ডামেন্টাল] এবং লাইব্রেরিতে সি স্ট্যান্ডার্ডের উল্লেখ করে। তাহলে কি আপনি বলতে সত্য, যেখানে সি বলতে ++ নেই _Boolএবং _Imaginaryসি উপস্থিত না থাকার ++,? সি ++ ভাষাটি স্পষ্টভাবে সংজ্ঞায়িত করা হয়, সিতে "সম্পাদনা" এর শর্তে নয়, অন্যথায় মানটি আরও খাটো হতে পারে!
জোনাথন ওয়েকেলি

197

নামের সংঘর্ষ এড়ানোর নিয়মগুলি উভয়ই সি ++ স্ট্যান্ডার্ড (স্ট্রস্ট্রপ বইটি দেখুন) এবং সি ++ গুরু (সুটার ইত্যাদি) দ্বারা উল্লিখিত।

ব্যক্তিগত নিয়ম

যেহেতু আমি মামলাগুলি মোকাবেলা করতে চাইনি এবং একটি সহজ নিয়ম চেয়েছিলাম, তাই আমি একটি ব্যক্তিগত নকশা তৈরি করেছি যা সহজ এবং সঠিক উভয়ই:

প্রতীকটির নামকরণ করার সময়, আপনি যদি সংকলক / ওএস / স্ট্যান্ডার্ড লাইব্রেরিগুলির সাথে সংঘর্ষ এড়াতে পারেন আপনি যদি:

  • আন্ডারস্কোর দিয়ে কখনই প্রতীক শুরু করবেন না
  • ভিতরে টানা দুটি আন্ডারস্কোর সহ কোনও চিহ্নের নাম কখনও রাখবেন না।

অবশ্যই, আপনার কোডটিকে একটি অনন্য নেমস্পেসে রাখলে সংঘর্ষ এড়াতেও সহায়তা করে (তবে মন্দ ম্যাক্রোদের বিরুদ্ধে সুরক্ষা দেওয়া হবে না)

কিছু উদাহরণ

(আমি ম্যাক্রোগুলি ব্যবহার করি কারণ এগুলি সি / সি ++ চিহ্নগুলির আরও কোড-দূষণকারী, তবে এটি ভেরিয়েবলের নাম থেকে শ্রেণীর নাম পর্যন্ত কোনও কিছু হতে পারে)

#define _WRONG
#define __WRONG_AGAIN
#define RIGHT_
#define WRONG__WRONG
#define RIGHT_RIGHT
#define RIGHT_x_RIGHT

সি ++ 0x খসড়া থেকে নিষ্কাশন

থেকে n3242.pdf ফাইল (আমি অনুরূপ হতে চূড়ান্ত মানক পাঠ্য আশা):

17.6.3.3.2 গ্লোবাল নামগুলি [গ্লোবাল.নেমস]

নাম এবং ফাংশন স্বাক্ষরের কয়েকটি সেট সর্বদা প্রয়োগের জন্য সংরক্ষিত থাকে:

- প্রতিটি নাম যাতে ডাবল আন্ডারস্কোর _ _ থাকে বা একটি আন্ডারস্কোর দিয়ে শুরু হয় তারপরে বড় হাতের অক্ষর (2.12) কোনও ব্যবহারের জন্য প্রয়োগের জন্য সংরক্ষিত থাকে।

- আন্ডারস্কোর দিয়ে শুরু হওয়া প্রতিটি নাম গ্লোবাল নেমস্পেসে নাম হিসাবে ব্যবহারের জন্য প্রয়োগের জন্য সংরক্ষিত।

তবে এছাড়াও:

17.6.3.3.5 ব্যবহারকারী-সংজ্ঞায়িত আক্ষরিক প্রত্যয় [usrlit.suffix]

আন্ডারস্কোর দিয়ে শুরু হয় না এমন আক্ষরিক প্রত্যয় শনাক্তকারীগুলি ভবিষ্যতের মানদণ্ডের জন্য সংরক্ষিত।

এই শেষ ধারাটি বিভ্রান্তিকর, যদি আপনি বিবেচনা না করেন যে কোনও নাম একটি আন্ডারস্কোর দিয়ে শুরু হয় এবং একটি ছোট হাতের অক্ষর দ্বারা অনুসরণ করা হয় তবে বিশ্বব্যাপী নেমস্পেসে সংজ্ঞায়িত না হলে ঠিক হবে ...


9
@ মাইসাম: টানা __WRONG_AGAIN__দুটি আন্ডারস্কোর রয়েছে (শুরুতে দুটি এবং শেষে দুটি), সুতরাং এটি মান অনুসারে ভুল।
পেরেেসবাল

8
@ বিঃ: টানা WRONG__WRONGদুটি আন্ডারস্কোর রয়েছে (মাঝখানে দুটি), সুতরাং এটি স্ট্যান্ডার্ড অনুযায়ী ভুল
প্যাসেসারবাল

2
আপনার কোডটিকে একটি অনন্য নেমস্পেসে রাখলে সংঘর্ষ এড়াতে সহায়তা করে : তবে এটি এখনও পর্যাপ্ত নয়, কারণ শনাক্তকারী কোনও সুযোগ-সুবিধার ছাড়াই (যেমন __attribute__জিসিসির জন্য) কোনও কীওয়ার্ডের সাথে সংঘর্ষ করতে পারে ।
Ruslan

1
কেন স্ট্যান্ডার্ড অনুসারে মাঝখানে টানা দুটি আন্ডারস্কোর লাগতে সমস্যা হচ্ছে ? ব্যবহারকারী-সংজ্ঞায়িত আক্ষরিক প্রত্যয়গুলি যেমন 1234567Lবা আক্ষরিক মানগুলিতে প্রযোজ্য 4.0f; আইআইআরসি এটি ওএলটিপি: //en.cppreferences.com/w/cpp/language/user_literal
জেসন এস

1
Why is there any problem of having two consecutive underscores in the middle according to the standard?কারণ মান বলে যেগুলি সংরক্ষিত আছে। এটি ভাল বা খারাপ শৈলীর জন্য পরামর্শ নয় । এটা স্ট্যান্ডার্ড থেকে সিদ্ধান্ত । কেন তারা এই সিদ্ধান্ত নিয়েছে? আমি অনুমান করি যে প্রথম সংকলকগণ ইতিমধ্যে মানিকরণের আগে এই ধরনের সম্মেলনগুলি অনানুষ্ঠানিকভাবে ব্যবহার করেছিলেন।
প্যার্সেবল

38

এমএসডিএন থেকে :

সনাক্তকারী শুরুর সময় দুটি ক্রমিক আন্ডারস্কোর অক্ষর (__), বা একটি বড় নেতৃস্থানীয় আন্ডারস্কোর যার পরে একটি বড় হাতের অক্ষর থাকে, সমস্ত স্কোপের সি ++ বাস্তবায়নের জন্য সংরক্ষিত। বর্তমান বা ভবিষ্যতের সংরক্ষিত শনাক্তকারীদের সাথে সম্ভাব্য দ্বন্দ্বের কারণে ফাইল স্কোপ সহ নামগুলির জন্য একটি ছোট আন্ডারস্কোর অনুসরণকারী আপনার একটি শীর্ষস্থানীয় আন্ডারস্কোর ব্যবহার এড়ানো উচিত।

এর অর্থ হ'ল আপনি যখন একটি নিম্ন-কেস অক্ষর অনুসরণ করেন ততক্ষণ সদস্য ভেরিয়েবল উপসর্গ হিসাবে একক আন্ডারস্কোর ব্যবহার করতে পারেন।

এটি দৃশ্যত সি ++ স্ট্যান্ডার্ডের 17.4.3.1.2 বিভাগ থেকে নেওয়া হয়েছে, তবে আমি অনলাইনে পুরো স্ট্যান্ডার্ডের কোনও মূল উত্স খুঁজে পাই না।

আরও দেখুন এই প্রশ্নের


2
আমি n3092.pdf (সি ++ 0x স্ট্যান্ডার্ডের খসড়া) বিভাগে একটি অনুরূপ পাঠ্য পেয়েছি: "17.6.3.3.2 গ্লোবাল নাম"
প্যারেসেবল

7
মজার বিষয় হল, এটিই একমাত্র উত্তর বলে মনে হয় যা প্রশ্নের সরাসরি, সংক্ষিপ্ত উত্তর রয়েছে has
হাইড

9
@ হাইড: আসলে, এটি নয়, যেহেতু এটি বিশ্বব্যাপী নেমস্পেসে শীর্ষস্থানীয় আন্ডারস্কোর সহ কোনও সনাক্তকারী না রাখার নিয়মটি এড়িয়ে চলেছে। দেখুন রজার এর উত্তর । আমি সি ++ স্ট্যান্ডার্ডে কর্তৃপক্ষ হিসাবে এমএস ভিসি ডক্সের উদ্ধৃতিগুলি সম্পর্কে খুব সতর্ক থাকব।
sbi

@ এসবিআই আমি উল্লেখ করছিলাম "আপনি যখন একটি নিম্ন বর্ণের অক্ষর অনুসরণ করেন ততক্ষণ সদস্যের পরিবর্তনশীল উপসর্গ হিসাবে আপনি একটি একক আন্ডারস্কোর ব্যবহার করতে পারেন" , যা প্রশ্নের পাঠ্যটিতে প্রশ্নের উত্তর সরাসরি এবং সংক্ষিপ্তভাবে জবাব দেয়, নিমজ্জিত না হয়ে পাঠ্য প্রাচীর মধ্যে।
হাইড

5
প্রথমত, আমি এখনও কোনও ইঙ্গিতের অভাব বিবেচনা করি যে একই নিয়মটি বিশ্বব্যাপী নেমস্পেসের ক্ষেত্রে ব্যর্থতা প্রয়োগ করে না। তবে সবচেয়ে খারাপ বিষয়টি হ'ল সংলগ্ন আন্ডারস্কোরগুলি কেবলমাত্র শুরুতে নয়, যে কোনও স্থানেই সনাক্তকারী forbidden সুতরাং এই উত্তরটি কেবল একটি সত্যকে বাদ দিচ্ছে না, তবে বাস্তবে কমপক্ষে একটি সক্রিয়ভাবে ভুল দাবি করে। যেমনটি আমি বলেছি, এমএসভিসি ডক্সকে উল্লেখ করা এমন কিছু যা আমি যদি না করে কেবল ভিসির বিষয়ে প্রশ্ন না করি তবে আমি তা করব না।
এসবিআই

25

প্রশ্নের অন্যান্য অংশ হিসাবে, অভ্যন্তরীণ কোনও কিছুর সাথে সংঘর্ষ না ঘটানোর জন্য ভেরিয়েবল নামের শেষে আন্ডারস্কোর লাগানো সাধারণ ।

আমি এমনকি এটি ক্লাস এবং নেমস্পেসের ভিতরেও করি কারণ আমাকে তখন কেবল একটি নিয়ম মনে রাখতে হবে ("বিশ্বব্যাপী ক্ষেত্রের মধ্যে নামের শেষে, এবং অন্য কোথাও নামের শুরুতে" তুলনা করা)।


2

হ্যাঁ, আন্ডারস্কোরগুলি সনাক্তকারী হিসাবে যে কোনও জায়গায় ব্যবহার করা যেতে পারে। আমি বিশ্বাস করি যে বিধিগুলি হ'ল: প্রথম অক্ষরে অ্যাজেড, এজেড, _ এবং নিম্নলিখিত অক্ষরের জন্য + 0-9

ইনসকোর উপসর্গগুলি সি কোডে সাধারণ - একক আন্ডারস্কোর অর্থ "ব্যক্তিগত" এবং দ্বৈত আন্ডারস্কোর সাধারণত সংকলক দ্বারা ব্যবহারের জন্য সংরক্ষিত থাকে।


3
এগুলি গ্রন্থাগারগুলিতে প্রচলিত। এগুলি ব্যবহারকারীর কোডে সাধারণ হওয়া উচিত নয়।
মার্টিন ইয়র্ক

43
মানুষ কি সি লেখার লাইব্রেরি, আপনি জানেন।
জন মিলিকিন

7
"হ্যাঁ, শনাক্তকারীদের যে কোনও জায়গায় আন্ডারস্কোর ব্যবহার করা যেতে পারে।" এটি বিশ্বব্যাপী শনাক্তকারীদের পক্ষে ভুল। দেখুন রজার এর উত্তর
sbi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.