কেন আমাদের একটি হেডার ফাইল লিখতে হবে?


12

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

আমি মোবাইল বিকাশে কম্পিউটার বিজ্ঞান কোর্সের জন্য উদ্দেশ্য সি শিখছি একজন আন্ডারগ্রাড শিক্ষার্থী। আমি জানি যে, একাডেমিক সেটিংয়ে, আপনি ছোট প্রকল্পগুলি তৈরি করছেন, ছোট দলে কাজ করছেন ইত্যাদি যেহেতু অনেকগুলি বাস্তব-জগত বিবেচনা করার প্রয়োজন নেই etc.

তবে আমাদের অধ্যাপক দাবি করেন - এবং এক্সকোড সমর্থন করে - প্রতিটি। মি প্রয়োগের ফাইলের জন্য .H শিরোনাম ফাইল। আমার কাছে এটি একধরনের ব্যস্ততার মতো মনে হয়। আমাকে নিশ্চিত করতে হবে যে আমি প্রতিটি পদ্ধতির স্বাক্ষর এবং দৃষ্টান্ত পরিবর্তনশীলটি অন্য ফাইলটিতে অনুলিপি করি। আমি যদি একটি ফাইল পরিবর্তন করি তবে আমাকে অবশ্যই তা অন্য ফাইলের সাথে সামঞ্জস্য করতে হবে তা নিশ্চিত করতে হবে। মনে হচ্ছে এটির মতো ছোট ছোট বিরক্তির একগুচ্ছ।

তবে আমি জানি হেডার ফাইলগুলির জন্য কিছু বাস্তব-বিশ্ব ব্যবহার থাকতে হবে । একটি দুর্দান্ত উত্তর উভয়কে সম্বোধন করবে:

  1. একটি বাস্তবায়ন ফাইলের জন্য উপযুক্ত নয় এমন একটি শিরোনাম ফাইল কী? এর উদ্দেশ্য কী?
  2. প্রোগ্রামার হিসাবে আমরা ম্যানুয়ালি আমাদের শিরোনাম ফাইলগুলি লিখতে হয় কেন? দেখে মনে হচ্ছে এগুলি সহজেই স্বয়ংক্রিয়ভাবে উত্পন্ন হতে পারে।

আগাম ধন্যবাদ!


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

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

আমি আশ্চর্য হয়েছি যে এ জাতীয় কার্যকারিতা নেই। আমি জানি যে Eclipse জাভাতে যেমন রিফ্যাক্টরিং করতে পারে, আমি জানি না যে C / C ++ প্লাগইনগুলি হেডার / ইমপ্ল রিফ্যাক্টরিং করতে পারে কিনা। আমার ধারণা, এক্সকোডের জন্য যদি এই জাতীয় কোনও সরঞ্জাম না উপস্থিত থাকে তবে এটি বিকাশের উপযুক্ত কিছু হতে পারে। ;)
হতাশ

উত্তর:


9
  1. সংক্ষেপে;

    • শিরোনাম ফাইলটি একটি মডিউলটির জন্য এপিআইকে সংজ্ঞায়িত করে। এটি একটি চুক্তি তালিকা যা কোন তৃতীয় পক্ষ কল করতে পারে methods মডিউলটি তৃতীয় পক্ষের একটি কালো বক্স হিসাবে বিবেচনা করা যেতে পারে।

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

  2. শিরোনাম ফাইলের কিছু অংশ স্বয়ংক্রিয়ভাবে উত্পন্ন হতে পারে - পদ্ধতি ঘোষণার। এটির জন্য আপনাকে বাস্তবায়নটি বয়ান করা দরকার কারণ বাস্তবায়নে ব্যক্তিগত পদ্ধতিগুলি সম্ভবত রয়েছে যা এপিআইয়ের অংশ হয় না এবং শিরোলেখের অন্তর্ভুক্ত নয়।

শিরোনাম ফাইলগুলির মধ্যে কখনও কখনও তাদের মধ্যে অন্যান্য তথ্য থাকে; টাইপ সংজ্ঞা, ধ্রুবক সংজ্ঞা ইত্যাদি এগুলি শিরোনাম ফাইলে অন্তর্ভুক্ত, বাস্তবায়নে নয়।


তবে কেউ যখন আমার কোডটি ব্যবহার করার প্রয়োজনে এমন অবস্থায় থাকবে তবে কেবল তার .h ফাইলে অ্যাক্সেস থাকবে? এটি চালানোর জন্য কি তাদের এখনও .m এর প্রয়োজন হবে না?
হার্টলে ব্রোডি 20'11

1
আমি তাত্ত্বিক স্তরে বিমূর্ততার প্রয়োজনীয়তাটি বুঝতে পারি, আপনি যদি প্রয়োগের বিবরণ পরিবর্তন করেন তবে আমি কখনই এরকম পরিস্থিতি তৈরি হবে তা নিশ্চিত নই।
হার্টলে ব্রোডি 20'11

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

ওহহ আচ্ছা. কোডটি ইতিমধ্যে সংকলিত হবে বলে বিবেচনা না করে এইভাবে ব্যবহারযোগ্য কিন্তু পাঠযোগ্য নয়। ধন্যবাদ!
হার্টলে ব্রোডি

3
এছাড়াও, আপনার কোডটি কীভাবে ব্যবহার করবেন তা জানতে কেন আমি বাস্তবায়নটি পড়তে চাই? হেডার ফাইলটি পড়ার জন্য এটি পর্যাপ্ত হওয়া উচিত।
প্রতি জোহানসন

5

শিরোনামের প্রধান কারণ হ'ল #includeএটি অন্য কোনও ফাইলে সক্ষম হওয়া , যাতে আপনি অন্য ফাইল থেকে একটি ফাইলের ফাংশনগুলি ব্যবহার করতে পারেন। শিরোনামটিতে (কেবলমাত্র) ফাংশনগুলি ব্যবহার করতে সক্ষম হওয়ার জন্য যথেষ্ট পরিমাণে অন্তর্ভুক্ত রয়েছে , তাদের নিজস্ব ফাংশনগুলি নয়, তাই (আমরা আশা করি) এটি সংকলনটি যথেষ্ট দ্রুত হয়।

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


2

একটি শিরোলেখ সহ আপনার কোডটিকে অন্য কোথাও লিখিত ফাংশন বা পদ্ধতিগুলিতে কল করার অনুমতি দেয় এবং যা আপনার সফ্টওয়্যার প্রকল্প / বিল্ডের অংশ হতে পারে বা নাও হতে পারে, তবে আপনি যখন সফ্টওয়্যারটি তৈরি করছেন তখন 'লিঙ্কার' দ্বারা এটি পাওয়া যাবে।

উদাহরণস্বরূপ, আপনি যখন স্ট্যান্ডার্ড সি লাইব্রেরিতে কোনও ফাংশন কল করেন তখন আপনাকে সেই প্রকল্পের সমস্ত অভ্যন্তরটিকে আপনার প্রকল্পের ভিতরে রাখতে হবে না - আপনি কেবল আপনার প্রোগ্রামটি কল করতে সক্ষম হবেন বলে আশা করছেন।

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


1

শিরোনাম ফাইলগুলি প্রধানত অন্যান্য ফাইলে আপনার ফাংশনের স্বাক্ষরগুলি (যেমন ফাংশন নাম, রিটার্ন মান এবং যুক্তি) অন্তর্ভুক্ত করতে এবং অন্তর্ভুক্ত করতে ব্যবহৃত হয়। আপনার ফাইলগুলি সংহত করে সংযোগ করার সময় সংকলকটির এই স্বাক্ষরগুলি জানতে হবে।

আরও তথ্যের জন্য এই নিবন্ধটি পড়ুন ।

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