c++ - অবজ - সি++ প্রোগ্রামিং বই ডাউনলোড




সি++ মধ্যে ট্র্রিগ্রাফ ক্রম উদ্দেশ্য? (6)

আমি কোনও পিসিতে রান / সংকলিত / ডিবাগ করা একটি মেইনফ্রেম থেকে PL / 1 প্রোগ্রামগুলিকে রূপান্তর করতে সহায়তা করার জন্য প্রথম দিকে '90 এর দশকে ব্যবহৃত ট্রিগারগুলি দেখেছি।

তারা পিএল / আই থেকে সি কম্পাইলার ব্যবহার করে পিএল / আই সম্পাদনা করে ড্যাব্লিং করছিল এবং তারা মেনফ্রেমে ফিরে যাওয়ার সময় কোডটি কাজ করতে চেয়েছিল যা কোঁকড়া ধনুর্বন্ধনী সমর্থন করে না। আমি তারা মত ম্যাক্রো ব্যবহার করতে পারে যে প্রস্তাব

#def BEGIN {    
#def END }  

অথবা একটি বন্ধুত্বপূর্ণ পিএল / আমি বিকল্প হিসাবে

#def BEGIN ??<
#def END ??>

এবং তারা সত্যিই অভিনব পেতে চেয়েছিলেন তারা চেষ্টা করতে পারে

#ifdef MAINFRAME
    #def BEGIN ??<
    #def END ??>
#else
    #def BEGIN {    
    #def END }  
#endif

এবং তারপর প্রোগ্রাম Pascal লেখা ছিল মত দেখতে হবে। তারা শুধু আমার মজার লাগছিল এবং বাকি দিনের জন্য আমার সাথে কথা বলত না। আমি তাদের দোষারোপ করি না। :)

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

C ++ '03 স্ট্যান্ডার্ড 2.3 / 1 অনুসারে:

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

----------------------------------------------------------------------------
| trigraph | replacement | trigraph | replacement | trigraph | replacement |
----------------------------------------------------------------------------
| ??=      | #           | ??(      | [           | ??<      | {           |
| ??/      | \           | ??)      | ]           | ??>      | }           |
| ??’      | ˆ           | ??!      | |           | ??-      | ˜           |
----------------------------------------------------------------------------

বাস্তব জীবনে যে মানে কোড printf( "What??!\n" ); What| প্রিন্টিং ফলাফল What| কারণ ??! একটি ট্রিগার ক্রম যে সঙ্গে প্রতিস্থাপিত হয় অক্ষর।

আমার প্রশ্ন ট্রাইগ্রাফ ব্যবহার করার উদ্দেশ্য কি? Trigraphs ব্যবহার করার কোনো বাস্তব সুবিধা আছে?

ইউপিডি : উত্তরগুলিতে উল্লেখ করা হয়েছে যে কিছু ইউরোপীয় কীবোর্ডগুলিতে সমস্ত বিরামচিহ্ন অক্ষর নেই, তাই অ-মার্কিন প্রোগ্রামারদের দৈনন্দিন জীবনের ট্রিগারগুলি ব্যবহার করতে হবে?

ইউপিডি 2 : ভিজ্যুয়াল স্টুডিও ২010 ডিফল্টভাবে ট্রিগার সমর্থন বন্ধ করে দিয়েছে।


কিছু ইউরোপীয় কীবোর্ডগুলি কি (না?) সমস্ত মার্কিন যুক্তরাষ্ট্রে কীবোর্ডের বিরাম চিহ্নগুলি রাখে না, কারণ তাদের অস্বাভাবিক বর্ণমালা অক্ষরগুলির জন্য কীগুলির প্রয়োজন। সুতরাং উদাহরণস্বরূপ (এটি তৈরি করা), সুইডিশ কীবোর্ডটি A-ring থাকবে যেখানে কোঁকড়া ব্রেস ছিল।

সেই ব্যবহারকারীদের সামঞ্জস্য করার জন্য, ট্রিগারগুলি কেবলমাত্র সাধারণ ASCII অক্ষরগুলি ব্যবহার করে বিরাম চিহ্ন প্রবেশ করার একটি উপায়।


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

আপনি যদি জানেন না যে তারা কীসের জন্য থাকে তবে আপনাকে তাদের ব্যবহার করা উচিত নয়।

যদিও এটি সম্পর্কে সচেতন হওয়া এখনও ভাল, তবে আপনি যেহেতু আপনার কোডে দুর্ঘটনাক্রমে এবং অজ্ঞাতভাবে এটি ব্যবহার করতে পারেন।


তারা সিস্টেমে ব্যবহারের জন্য যা C ++ এর মৌলিক অক্ষর সেটের কিছু অক্ষর অভাব রয়েছে। বলতে অবহেলা, যেমন সিস্টেম অত্যন্ত বিরল।


শিশু আজ! :-)

হ্যাঁ, আইবিএম 3270 টার্মিনাল যেমন বিদেশী সরঞ্জাম। 3270, মনে আছে, কোন কোঁকড়া ধনুর্বন্ধনী! আপনি যদি একটি আইবিএম মিনি / মেইনফ্রেমে সি লিখতে চান তবে আপনাকে প্রতিটি ব্লক সীমাবদ্ধতার জন্য ক্ষতিকারক ট্রিগারগুলি ব্যবহার করতে হয়েছিল । সৌভাগ্যবশত, আমি কিছু আইবিএম মিনিকম্পিউটারের সুবিধাগুলি অনুকরণ করতে সিটিতে সফ্টওয়্যার লিখতে হয়েছিল, আসলে সিস্টেম / 36 তে সি সফটওয়্যারটি লিখিনি।

"পি" কী এর পাশে দেখুন: http://www.9999hp.net/keyboard/temp/1389260-big.jpg

হুম। বলা কঠিন. "ক্যারিয়ার রিটার্ন" এর পাশে একটি অতিরিক্ত বোতাম রয়েছে, এবং আমার এটি পিছনে থাকতে পারে: সম্ভবত এটি "[" / "]" জোড়া ছিল যা অনুপস্থিত ছিল। কোনও হারে, যদি আপনি সি লিখতে চান তবে এই কীবোর্ডটি আপনাকে দুঃখ দেবে।

এছাড়াও, এই টার্মিনালগুলি EBCDIC, আইবিএম এর "নেটিভ" মেইনফ্রেম চরিত্র সেট প্রদর্শন করে, ASCII নয় (ধন্যবাদ, পাভেল মিনেভ, অনুস্মারকের জন্য)।

অন্যদিকে, জিএনইউ সি গাইডের মত: "আপনার এই মস্তিষ্কের ক্ষতির দরকার নেই।" জিপিএ সংকলন ডিফল্টরূপে এই "বৈশিষ্ট্য" নিষ্ক্রিয়।


এই প্রশ্ন (ঘনিষ্ঠভাবে সম্পর্কিত digraphs সম্পর্কে) উত্তর আছে।

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

সাধারণভাবে, আপনাকে তাদের ব্যবহার করার দরকার নেই, তবে আপনি যে সমস্যার সম্মুখীন হয়েছেন তার জন্য আপনাকে তাদের সম্পর্কে জানতে হবে। ট্রাইগগ্রাফের কারণ কি ? 'অক্ষর একটি অব্যাহতি ক্রম আছে:

'\?'

সুতরাং আপনি আপনার উদাহরণ সমস্যা এড়াতে পারেন একটি দম্পতি উপায় হয়:

 printf( "What?\?!\n" ); 

 printf( "What?" "?!\n" ); 

কিন্তু আপনি যখন মনে রাখবেন আপনি দুটি টাইপ করছেন? এমন অক্ষর যা আপনি একটি ট্রিগার শুরু করতে পারেন (এবং অবশ্যই এটি এমন কিছু নয় যা আমি ভাবছি)।

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

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

সি / সি ++ প্রোগ্রামগুলির মধ্যে বিরামচিহ্নের সাথে বিভিন্ন মজাদার একটি চমৎকার শিক্ষার জন্য (একটি ট্রিগার ট্র্যাফিক সহ যা অবশ্যই আমাকে আমার চুল টেনে নিয়ে যেতে পারে), হেরব Sutter এর GOTW # 86 নিবন্ধটি দেখুন

সংযোজন:

মনে হচ্ছে GCC ডিফল্টভাবে ট্রিগার (এবং সম্পর্কে সতর্ক করবে) ট্রিগারগুলি প্রক্রিয়া করবে না। কিছু অন্যান্য কম্পাইলারের ট্রাইগ্রাফ সাপোর্ট বন্ধ করার বিকল্প আছে (উদাহরণস্বরূপ IBM)। মাইক্রোসফ্ট VS2008 এ একটি সতর্কতা (C4837) সমর্থন শুরু করেছে যা স্পষ্টভাবে সক্রিয় করা উচিত (ওয়াল বা কিছু ব্যবহার করে)।





trigraphs