সি ++ তে একটি "অনুবাদ ইউনিট" কী


236

আমি সেই সময় মাইয়ারদের দ্বারা লেখা "কার্যকর সি ++" পড়ছি এবং "অনুবাদ ইউনিট" শব্দটি পেলাম।

কেউ দয়া করে আমাকে একটি ব্যাখ্যা দিতে পারে:

1) এটি ঠিক কি

2) সি ++ সহ প্রোগ্রামিং করার সময় আমি কখন এটি ব্যবহারের কথা বিবেচনা করব

3) যদি এটি কেবল সি ++ এর সাথে সম্পর্কিত হয়, বা এটি অন্যান্য প্রোগ্রামিং ভাষার সাথে ব্যবহার করা যেতে পারে

শব্দটি না জেনে আমি ইতিমধ্যে এটি ব্যবহার করতে পারি ...


1
২. আপনি যদি শিরোনাম ফাইল অন্তর্ভুক্ত করে থাকেন তবে আপনি ইতিমধ্যে অনুবাদ ইউনিটটি ব্যবহার করছেন। এটি একটি শব্দটি রেফারেন্সের জন্য ব্যবহৃত হয়েছে এবং প্রতি সি -++ নির্মাণের জন্য নয়
টেল্কডস্কোবিডা

উত্তর:


268

থেকে এখানে : ( wayback মেশিন লিংক )

মতে মান সি ++ ( wayback মেশিন লিংক ): একটি অনুবাদ ইউনিট ++, সি সংকলন মৌলিক ইউনিট। এটিতে একটি একক উত্স ফাইলের বিষয়বস্তু এবং প্লাস্টিকের মাধ্যমে প্রত্যক্ষ বা অপ্রত্যক্ষভাবে যে কোনও শিরোনাম ফাইলের বিষয়বস্তু রয়েছে, শর্তসাপেক্ষ প্রিপ্রোসেসিং স্টেটমেন্ট ব্যবহার করে অবহেলা করা হয়েছে এমন লাইনগুলি বিয়োগ করবে।

একটি একক অনুবাদ ইউনিট কোনও অবজেক্ট ফাইল, গ্রন্থাগার বা এক্সিকিউটেবল প্রোগ্রামে সংকলন করা যায়।

একটি অনুবাদ ইউনিটের ধারণাটি প্রায়শই ওয়ান ডেফিনিশন রুল এবং টেম্পলেটগুলির প্রসঙ্গে দেখা যায়।


9
শব্দটি কি কেবল সি / সি ++ এ ব্যবহৃত হয়?
dekuShrub

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

নতুন রেফারেন্স যা এই উত্তরটি মোটামুটি বলেছে: en.wikedia.org/wiki/Translation_unit_( প্রোগ্রামিং)
গ্যাব্রিয়েল স্ট্যাপলস

67

একটি অনুবাদ ইউনিট সমস্ত শিরোনাম ফাইলগুলি সমেত এটি শেষ করার পরে একটি ফাইল (.c / .cpp) ফাইলের উদ্দেশ্যে হয় purposes

http://msdn.microsoft.com/en-us/library/bxss3ska%28VS.80%29.aspx


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

10
আপনি ".h" এ শেষ হওয়া ফাইলগুলি ঠিকঠাক সংকলন করতে পারেন। ফাইল-নাম মোটেই গুরুত্বপূর্ণ নয়। বিষয়বস্তু হয়। "Foo.h" এর বিষয়বস্তু যদি "ইন্টার মেন () is}" হয় তবে আপনি এটি সংকলন করতে পারেন।
জোহানেস স্কাউব - 21

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

1
@ জিমনিক জি: কীভাবে "। এইচ ফাইলগুলি সরাসরি সংকলককে সরাসরি খাওয়ানো হয় না।"
5:38

@ জোহানেস শ্যাব-লিটব আমি মনে করি আপনার লিঙ্কটি বোঝানো হয়েছে, সংকলন নয়। আপনি যে কোনও ফাইল যতক্ষণ না যথাযথ সি / সি ++ সমস্ত নাম সংজ্ঞায়িত করে সংকলন করতে পারেন। একটি শিরোলেখ ফাইলটি সংকলন করা অযথাই হবে যেহেতু একটি শিরোলেখ ফাইলের পুরো পয়েন্টটি উত্স ফাইলে অন্তর্ভুক্ত করা হয় (অনুলিপি পড়ুন), সুতরাং আপনি ইতিমধ্যে কোনও উত্স ফাইল সংকলন করার সময় সেগুলি ইতিমধ্যে সংকলন করা হচ্ছে। আমি অনুমান করি আপনি যা বলতে চেয়েছেন তা হ'ল আপনি এমন কোনও ফাইল থেকে এক্সিকিউটেবল তৈরি করতে পারবেন না যার মূল ফাংশন নেই।
pooya13

30

সুনির্দিষ্টভাবে উত্তর দেওয়া একটি কঠিন প্রশ্ন। সি ++ স্ট্যান্ডার্ড বলছে:

প্রোগ্রামটির পাঠ্যটি এই আন্তর্জাতিক স্ট্যান্ডার্ডে উত্স ফাইল নামক ইউনিটে রাখা হয়। সমস্ত শিরোলেখ (17.4.1.2) এবং উত্স ফাইলগুলি (16.2) এর সাথে প্রাক-প্রসেসিং নির্দেশিকা # অন্তর্ভুক্ত সহ একটি উত্স ফাইল, শর্তসাপেক্ষ অন্তর্ভুক্তি (16.1) প্রিপ্রোসেসিং নির্দেশিকাগুলির দ্বারা বাদ দেওয়া কোনও উত্সের রেখাকে অনুবাদ ইউনিট বলে। [দ্রষ্টব্য: একটি সি ++ প্রোগ্রামের সমস্ত একই সাথে অনুবাদ করার দরকার নেই। ]

সুতরাং বেশিরভাগ উদ্দেশ্য এবং উদ্দেশ্যগুলির জন্য একটি অনুবাদ ইউনিট হ'ল একক সি ++ উত্স ফাইল এবং শিরোনাম বা অন্যান্য ফাইলগুলির মধ্যে এটি প্রিপ্রসেসর # অন্তর্ভুক্ত প্রক্রিয়াটির মাধ্যমে অন্তর্ভুক্ত।

আপনার অন্যান্য প্রশ্ন সম্পর্কে:

2) সি ++ সহ প্রোগ্রামিং করার সময় আমি কখন এটি ব্যবহারের কথা বিবেচনা করব

আপনি এটি বিবেচনা করতে পারবেন না - অনুবাদ ইউনিটগুলি হ'ল সি ++ প্রোগ্রামের ভিত্তি।

3) যদি এটি কেবল সি ++ এর সাথে সম্পর্কিত হয়, বা এটি অন্যান্য প্রোগ্রামিং ভাষার সাথে ব্যবহার করা যেতে পারে

অন্যান্য ভাষায় একই ধারণা রয়েছে তবে তাদের শব্দার্থক শব্দগুলি পৃথক পৃথক হবে। উদাহরণস্বরূপ, বেশিরভাগ অন্যান্য ভাষা প্রিপ্রসেসর ব্যবহার করে না।


1
আমি জানি না যে এটি স্পষ্ট করে কিনা। এটি কিছুটা দুর্বল অঞ্চল হতে পারে - উদাহরণস্বরূপ, প্রাক-সংকলিত শিরোনামগুলির দ্বারা অনুমোদিত যে প্যারাটি আমি উদ্ধৃত করেছি তা থেকে এটি পরিষ্কার নয়।

1
@ জিএমএন, এবং সেখানেই আপনাকে একটি সংজ্ঞা বিধি সম্পর্কে খুব সতর্ক থাকতে হবে। আপনি যদি ক্লাসটি অন্তর্ভুক্ত করার আগে কিছুটা পৃথক সংজ্ঞায়িত আলাদা আলাদা ইউনিটগুলিতে আলাদা আলাদা ইউনিটে অন্তর্ভুক্ত করেন যা শ্রেণিটির আলাদা কোড থাকে যার ফলে এটি অনির্ধারিত সমস্যা তৈরি করে।
ম্যাট দাম

6
@ জিএম মান স্ট্যান্ডার্ড দ্বারা ব্যবহৃত দুটি পদ নোট করে: "শিরোনাম" এবং "উত্স ফাইল"। "শিরোনাম" কেবল স্ট্যান্ডার্ড লাইব্রেরির জন্য ব্যবহৃত হয়। কোনও ব্যবহারকারীর ফাইল যা কিছু কোড দ্বারা অন্তর্ভুক্ত থাকে তাকে স্ট্যান্ডার্ড দ্বারা "শিরোনাম" বলা হয় না, তবে "উত্স ফাইল"। "। এইচ" এবং ".সিপি" এর মধ্যে পার্থক্য সম্পর্কে স্ট্যান্ডার্ড জানে না যে আমরা সি ++ প্রোগ্রামার তৈরি করেছি :)
জোহানেস স্কাউব - লিটব

8

বইটি এটি যথেষ্ট পরিষ্কার করে দেয়। যখন মায়াররা "অনুবাদ ইউনিট" -কে রেফার করে, তখন তার অর্থ উত্স কোড ফাইল।


1
না, যদি তিনি উত্স কোড সম্পর্কে কথা বলছিলেন তবে তিনি উত্স ফাইলগুলি বলতেন। অনুবাদ ইউনিটটি উত্স কোডটি সংকলন করে তৈরি করা হয়। স্বতন্ত্র পার্থক্য নোট করুন। এটি "অনুবাদিত" উত্স কোড।
ড্যান

3
@ ড্যান: না, তা নয়। একটি অনুবাদ ইউনিট একটি উত্স ফাইল যা অন্তর্ভুক্ত রয়েছে যা সংকলন করা যেতে পারে, অর্থাত, সংকলনের পূর্বে প্রাক প্রসেসরের আউটপুট।
এড এস

1
আসলে, সি ++ স্ট্যান্ডার্ড এটিকে যা বলে, তবুও "অনুবাদ ইউনিট" সাধারণত সংকলিত কোডের একটি একক "ইউনিট" ধারণাটি যোগাযোগ করতে ব্যবহৃত হয়। আসলে মাইক্রোসফ্ট সংকলক ছেলেরা অনুযায়ী, আপনি "অনুবাদ ইউনিট" সরাসরি লিঙ্ক করেন। এমএসডিএন.মাইক্রোসফটকম
ড্যান

1
তাহলে আমরা কি "সি ++ স্ট্যান্ডার্ড" নাজিস হওয়ার চেষ্টা করছি বা আমরা কি বাকী শিল্পের সাথে যোগাযোগ করতে লোকদের সাহায্য করার চেষ্টা করছি? আমি জানি এটি একটি সি ++ থ্রেড তাই আমি এক্সকোডকে কোন টিউ বলি সেটিতে inুকতে চাই না। বা পদটির অন্যান্য সমস্ত সংজ্ঞা রয়েছে।
ড্যান

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

4

ওডিআর ছাড়াও অনুবাদ ইউনিট নামবিহীন নেমস্পেসগুলির সংজ্ঞাতে গুরুত্বপূর্ণ, যা "স্ট্যাটিক" এর পুরানো ব্যবহারগুলির মধ্যে একটিকে প্রতিস্থাপন করে।

আমার ধারণা, শীর্ষ উত্তরের অধীনে কোনও মন্তব্য যুক্ত করার মতো পর্যাপ্ত পয়েন্ট এখনও আমার কাছে নেই।


3

একটি অনুবাদ ইউনিট এমন একটি কোড যা সংকলককে যথাযথভাবে পাস করা হয়। এর অর্থ সাধারণত .c ফাইলটিতে প্রিপ্রসেসর চালানো থেকে আউটপুট।


2

সি এবং সি ++ প্রোগ্রামগুলিতে এক বা একাধিক উত্স ফাইল থাকে, যার প্রতিটিটিতে প্রোগ্রামের কিছু পাঠ্য থাকে। একটি উত্স ফাইল, এর সাথে ফাইলগুলি অন্তর্ভুক্ত রয়েছে (ফাইলগুলি # অন্তর্ভুক্ত প্রিপ্রোসেসর নির্দেশিকা ব্যবহার করে অন্তর্ভুক্ত করা হয়েছে) তবে শর্তাধীন-সংকলন নির্দেশিকা যেমন # আইফ দ্বারা সরানো কোডের বিভাগগুলি অন্তর্ভুক্ত না করে তাকে "অনুবাদ ইউনিট" বলা হয় called


1

এমএসডিএন অনুসারে : সি এবং সি ++ প্রোগ্রামগুলিতে এক বা একাধিক উত্স ফাইল থাকে, যার প্রতিটিটিতে প্রোগ্রামের কিছু পাঠ্য থাকে। একটি উত্স ফাইল, এর সাথে ফাইলগুলি অন্তর্ভুক্ত রয়েছে (ফাইলগুলি # অন্তর্ভুক্ত প্রিপ্রোসেসর নির্দেশিকা ব্যবহার করে অন্তর্ভুক্ত) তবে শর্তাধীন-সংকলন নির্দেশিকাগুলি যেমন # আইফ দ্বারা সরানো কোডের বিভাগগুলি অন্তর্ভুক্ত না করে তাকে "অনুবাদ ইউনিট" বলা হয়।


0

প্রতিটি সিপিপি / সি (বাস্তবায়ন) ফাইল সিলেপি ফাইলের অনুবাদ ইউনিটে (যেমন। অবজেক্ট ফাইল (.obj)) রূপান্তরিত হবে শিরোনাম ফাইলগুলি থেকে আসল পাঠ্য দ্বারা প্রতিস্থাপন করা হবে।


0

অন্যরা যেমন বলেছে, একটি অনুবাদ ইউনিট মূলত প্রাকপ্রসেসিংয়ের পরে উত্স ফাইলের বিষয়বস্তু। এটি ভাষার ব্যাকরণের শীর্ষতম উত্পাদন; আপনি যদি কেবল সি বা সি ++ সংকলক লিখছিলেন তবে আপনাকে কেবল এটির জন্য উদ্বেগের প্রয়োজন হবে।


1
"আপনি যদি কেবল সি বা সি ++ সংকলক লিখতেন তবে আপনার কেবল এটির জন্য উদ্বেগের প্রয়োজন হবে" " আমি অসম্মতি: প্রোগ্রামাররা প্রায়শই বুঝতে হবে যে সংকলকটি কী করছে। সুতরাং, উদাহরণস্বরূপ, কার্যকর সি ++ এ আইটেম # 5 থেকে একটি গুরুত্বপূর্ণ পয়েন্টটি বোঝার জন্য আপনাকে অনুবাদ ইউনিট কী তা জানতে হবে: "বিভিন্ন অনুবাদ ইউনিটে সংজ্ঞায়িত অ-স্থানীয় স্ট্যাটিক অবজেক্টগুলির প্রারম্ভিক সম্পর্কিত আপেক্ষিক ক্রমটি অপরিবর্তিত"।
মুরের পরিবর্তন

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