কম্পাইলারটি কোন ফাংশনটি তৈরি করেছে তা কীভাবে আবিষ্কার করবেন?


11

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

নির্দিষ্ট শ্রেণীর জন্য সংকলক-উত্পন্ন ফাংশন তালিকাভুক্ত করার কোনও উপায় আছে কি?

আমি প্রাথমিকভাবে ভিজুয়াল স্টুডিও 2019 এবং এক্সকোডে আগ্রহী, তবে একটি জেনেরিক সমাধান আরও স্বাগত হবে।

উত্তর:


11

নিয়মগুলি জটিল। আমি অন্য উত্তর থেকে চুরি করব যা হাওয়ার্ড হিন্যান্টের উপস্থাপনা থেকে একটি সারণী উদ্ধৃত করেছে ।

এখানে চিত্র বর্ণনা লিখুন

এখানে নৈতিক যে একটি ভাল অভ্যাস হল নির্ভর করে না কম্পাইলার অন্তর্নিহিত ঘোষণা এবং স্পষ্টভাবে যে বিশেষ সদস্য (খেলাপি হিসাবে অথবা মোছা হয়েছে, আপনার চাহিদা উপর নির্ভর করে) ঘোষণা


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

@ ম্যাক্সিমএগরোশকিন আমার বক্তব্যটি আপনার প্রয়োজন হলে তাদের ডিফল্ট হিসাবে ঘোষণা করা (যদিও ডিফল্ট বলতে এখনও ঘোষিত নয়) বা আপনি না চাইলে মুছে ফেলতে পারেন।
বলভ

2
@ বলভ চার্টটি কার্যকর তবে এটি আমার প্রশ্নের উত্তর দেয় না। কম্পাইলার দ্বারা আসলে কোন ফাংশন তৈরি হয়েছিল তা আমি জানতে চাই। অন্য কথায়: আমি তত্ত্বের ক্ষেত্রে কী ঘটতে হবে তা সম্পর্কে জিজ্ঞাসা করছি না, তবে বাস্তবে কী ঘটছে।
ক্লেইন

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

1
@ tjwrona1992: হ্যাঁ, ঠিক তেমনি, আপনার সংকলকটি কী জেনারেট করেছে তা দেখার বিষয়টিটি কম্পাইলারটি সঠিক কিনা তা যাচাই করা নয়, বরং আপনি সঠিক ইনপুট দিয়ে সংকলকটি সরবরাহ করেছেন তা যাচাই করা।
রুখ

7

"নির্দিষ্ট শ্রেণীর জন্য সংকলক উত্পন্ন ফাংশন তালিকাভুক্ত করার কোনও উপায় আছে কি?"

অবশ্যই আছে। উপর লিনাক্স (এবং অন্যান্য ইউনিক্স সিস্টেম সমুহের) আপনি ব্যবহার করতে পারেন nm, readelfএবং objdumpএ উৎপন্ন বস্তু ফাইল / লাইব্রেরি / তাদের অবতরণ এবং কোন রপ্তানি প্রতীক (এবং আরও অনেক কিছু) পরিদর্শন করা এক্সিকিউটেবল।

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


1
যদিও এই সরঞ্জামগুলি খুব ভাল তুমি কি দেখাতে পারে কি ফাংশন পারে উত্পন্ন হয়েছে (অর্থাত, কম্পাইলার তাদের উৎপন্ন করার অনুমতি দেওয়া হয়েছিল, কিন্তু আপনি ঐ ফাংশন আর কখনও ব্যবহৃত তাই এটা মাথা ঘামান না করার সিদ্ধান্ত নিয়েছে, বা লিঙ্ক-টাইম কোড বর্জন তাদের পরিত্রাণ লাভ)
জেএমএএ

@ জেএমএএ বেশিরভাগ ক্ষেত্রে, "উত্পাদনের অনুমতি দেওয়া হয় তবে কখনও ব্যবহৃত হয় না" এর অর্থ স্ট্যান্ডার্ড শর্তাদির অর্থ কোনও ফাংশনটি "স্পষ্টভাবে ঘোষণা করা" হলেও "স্পষ্টভাবে সংজ্ঞায়িত" হয় নি। হ্যাঁ, এর অর্থ এখনও ইনলাইনিং অক্ষম থাকলেও আপনি প্রতীকগুলি দেখতে পাবেন না।
aschepler

1
কড়া কথায় বলতে গেলে, এই উত্তর জিজ্ঞাসা করা প্রশ্নের উত্তরকে আরও স্পষ্টভাবে উত্তর দেয়: "সংকলক কোন পদ্ধতিগুলি উত্পন্ন করেছিল?" এটি খুব কম সুনির্দিষ্ট প্রশ্নের মতো নয় "কোন পন্থাগুলি আলাদা প্রসঙ্গে সংকলক দ্বারা উত্পাদিত হতে পারে?"
ধনী

@rici সত্য। তবে আরও সুনির্দিষ্ট প্রশ্নটি সহজেই উত্তরযোগ্য নয়, সুতরাং আমি যেটির উত্তর দিতে পারি তার পক্ষে গিয়েছিলাম। আপনি যদি আমার উত্তরটি মূল্যবান না বলে মনে করেন নিচে নির্দ্বিধায় হন।
জেস্পার জুহল

1
@ জেস্পার: না, আমি ইতিমধ্যে উত্সাহিত করেছি। আমি বলেছি আপনি যে প্রশ্নটির উত্তর দিয়েছেন তা আরও সুনির্দিষ্ট। অন্য প্রশ্নটি, যা সম্ভবত উদ্দেশ্য হতে পারে, এর জন্য কিছু হস্তাক্ষর প্রয়োজন কারণ এটি বৈপরীত্যপূর্ণ: আমরা জানি না এর মধ্যে কী অনুমানীয় বিষয় থাকতে পারে। কিন্তু এটি প্রশ্নটি আক্ষরিকভাবে জিজ্ঞাসা করা হয়েছে, উদ্দেশ্যমূলক বা না, তাই এর উত্তর দেওয়ার জন্য কুডোস os
ধনী

1

এটি বর্তমানে কেবল একটি আংশিক উত্তর।

ভিজ্যুয়াল স্টুডিও 2019

কন্সট্রাকটর

ক্লাস অবজেক্ট সংজ্ঞায়িত করার সময়, ভিজ্যুয়াল স্টুডিওর ইন্টেলিসেন্স ফাংশন উপলব্ধ সংযোজনকারী উভয় সংকলক তৈরি এবং আপনার নিজস্ব দেখায়:

এখানে চিত্র বর্ণনা লিখুন

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.