আমার (সীমাবদ্ধ - আমি সাধারনত সি বিকাশকারী নই) বোঝার জন্য, এটি সিতে নিযুক্ত। মনে রাখবেন যে ক্লাস বা নেমস্পেসগুলি কী তা সি জানেন না, এটি কেবল একটি দীর্ঘ প্রোগ্রাম। এছাড়াও, ফাংশনগুলি ব্যবহার করার আগে আপনাকে তাদের ঘোষণা করতে হবে।
উদাহরণস্বরূপ, নিম্নলিখিতগুলির একটি সংকলক ত্রুটি দেওয়া উচিত:
void SomeFunction() {
SomeOtherFunction();
}
void SomeOtherFunction() {
printf("What?");
}
ত্রুটিটি এমন হওয়া উচিত যে "SomeOथरFunction ঘোষণা করা হয়নি" কারণ আপনি এটি ঘোষণার আগেই এটি কল করেছেন। এটি ঠিক করার একটি উপায় হ'ল সামোর ফাংশনের উপরে সামোথার ফাংশনটি সরানো। আরেকটি পদ্ধতি হ'ল প্রথমে ফাংশনগুলির স্বাক্ষর ঘোষণা করা:
void SomeOtherFunction();
void SomeFunction() {
SomeOtherFunction();
}
void SomeOtherFunction() {
printf("What?");
}
এটি সংকলকটি জানতে দেয়: কোডটির কোথাও দেখুন, সোমারোথার ফাংশন নামে একটি ফাংশন রয়েছে যা শূন্য করে দেয় এবং কোনও পরামিতি নেয় না। সুতরাং যদি আপনি হিটটার কোডর যা সামোথার ফাংশনকে কল করতে চেষ্টা করে, আতঙ্কিত হবেন না এবং পরিবর্তে এটি সন্ধান করুন।
এখন, কল্পনা করুন যে আপনার কাছে দুটি পৃথক .c ফাইলে সামু ফাংশন এবং সামোথার ফাংশন রয়েছে। তারপরে আপনাকে সামার.কে "সামোরআউট.আর.সি." অন্তর্ভুক্ত করতে হবে। এখন, সামোথর সি.কে কিছু "ব্যক্তিগত" ফাংশন যুক্ত করুন। যেহেতু সি ব্যক্তিগত ফাংশনগুলি জানে না, সেই ফাংশনটি সামার সি.এস. তেও উপলব্ধ।
এখানেই .h ফাইলগুলি আসে: তারা .c ফাইল থেকে 'রফতানি' করতে চান এমন সমস্ত ফাংশন (এবং ভেরিয়েবল) নির্দিষ্ট করে যা অন্যান্য .c ফাইলগুলিতে অ্যাক্সেস করা যায়। এইভাবে, আপনি পাবলিক / প্রাইভেট স্কোপের মতো কিছু অর্জন করতে পারেন। এছাড়াও, আপনি এই উত্স কোডটি আপনার উত্স কোডটি ভাগ না করেই অন্য লোককে দিতে পারেন - .h ফাইলগুলি সংকলিত .lib ফাইলগুলির বিরুদ্ধেও কাজ করে।
সুতরাং মূল কারণটি হ'ল সুবিধার জন্য, উত্স কোড সুরক্ষার জন্য এবং আপনার অ্যাপ্লিকেশনটির অংশগুলির মধ্যে কিছুটা ডিকপলিং।
যদিও সি ছিল। সি ++ ক্লাস এবং প্রাইভেট / পাবলিক মডিফায়ার প্রবর্তন করেছে, সুতরাং আপনি এখনও তাদের প্রয়োজন কিনা জানতে চাইতে পারেন, সি ++ এএফআইএকে এখনও তাদের ব্যবহারের আগে ফাংশনগুলির ডিক্লেয়ারেশন প্রয়োজন। এছাড়াও, অনেক সি ++ বিকাশকারীরা সি সিভিলোপারও ছিলেন বা তাদের ধারণা এবং অভ্যাসগুলি সি ++ এ নিয়েছিলেন - কেন ভাঙা হয়নি?