গ্লোবাল ফাংশন
একটি গ্লোবাল ফাংশন হল একটি ফাংশন যা একটি C ফাইলে main() ফাংশনের আগে সংজ্ঞায়িত করা হয়। এমনকি main() ফাংশন একটি বিশ্বব্যাপী ফাংশন কিন্তু main() ফাংশন এই নিবন্ধে ফোকাস নয়। সি ভাষাতে, প্রোগ্রামার-সংজ্ঞায়িত ফাংশনগুলি সাধারণত বিশ্বব্যাপী ফাংশন এবং সহজভাবে ফাংশন হিসাবে উল্লেখ করা হয়।
একটি গ্লোবাল ফাংশন তার ফাইলের যে কোনো সুযোগে কল করা যেতে পারে। একটি ভিন্ন ফাইলে একটি গ্লোবাল ফাংশন দেখার জন্য, এর প্রোটোটাইপটিকে সেই ভিন্ন ফাইলে ঘোষণা করতে হবে (নীচে দেখুন।) একটি ফাইলে সংজ্ঞায়িত একটি ফাংশনকে একটি ভিন্ন ফাইলে দেখা থেকে রোধ করতে, সংজ্ঞাটির আগে সংরক্ষিত শব্দ, স্থির। এর সাথে, স্ট্যাটিক ফাংশনটি শুধুমাত্র তার নিজস্ব ফাইলে একটি গ্লোবাল ফাংশন হবে এবং অন্য ফাইলে দেখা যাবে না।
সুতরাং, otherFile.c-এ সংজ্ঞায়িত একটি গ্লোবাল ফাংশন otherFile.c-এর যেকোনো জায়গায় দেখা যাবে। এটি mainFile.c-এ দেখার জন্য, এর প্রোটোটাইপ mainFile.c-এ ঘোষণা করতে হবে (নীচে দেখুন।) otherFile.c-এ এর সংজ্ঞার আগে 'স্ট্যাটিক' লেখা উচিত নয়। এটাকে mainFile.c-এ দেখা না দেওয়ার জন্য, otherFile.c-এ এর সংজ্ঞাটিকে স্ট্যাটিক শব্দের আগে স্ট্যাটিক দিয়ে কমা দিয়ে সরিয়ে দিতে হবে।
এই নিবন্ধটি কম্পিউটারের ভাষায় স্ট্যাটিক ফাংশনকে চিত্রিত করে, C ফাংশন প্রোটোটাইপের অর্থ দিয়ে শুরু হয় এবং দুই বা ততোধিক ফাইলের একটি C প্রোগ্রামে এর ব্যবহার।
ফাইলগুলির সংকলন, mainFile.c এবং otherFile.c, নিম্নলিখিত ব্যাশ টার্মিনাল কমান্ডের সাথে করা যেতে পারে:
জিসিসি প্রধান ফাইল। গ অন্য ফাইল। গ - যে তাপমাত্রা exe
temp.exe হল একক এক্সিকিউটিং ফাইলের নাম।
প্রবন্ধ বিষয়বস্তু
সি ফাংশন প্রোটোটাইপ
গ্লোবাল ফাংশন সংজ্ঞা বিবেচনা করুন:
চর * fn1 ( চর * stri ) {ফিরে stri ;
}
এই ফাংশনের প্রোটোটাইপ হল:
চর * fn1 ( চর * stri ) ;এটি ফাংশন স্বাক্ষর, সেমিকোলনে শেষ হয়।
এখন, otherFile.c এর বিষয়বস্তু হতে দিন:
চর * fn1 ( চর * stri ) {ফিরে stri ;
}
অনুমান করুন যে ফাইল, otherFile.c-এর শুধুমাত্র গ্লোবাল ফাংশনের সংজ্ঞা আছে, fn1()। এখন ফাইলের বিষয়বস্তু, mainFile.c, হতে দিন:
# অন্তর্ভুক্ত করুনচর * fn1 ( চর * stri ) ;
int প্রধান ( )
{
চর * str = fn1 ( 'দেখা' ) ;
printf ( '%s \n ' , str ) ;
ফিরে 0 ;
}
এটি শুরু হয়
এই প্রধান ফাইলে ডিফল্ট main() ফাংশন ছাড়া অন্য কোনো গ্লোবাল ফাংশনের সংজ্ঞা নেই। প্রধান ফাংশনে, প্রথম বিবৃতিটি অন্য ফাইলে সংজ্ঞায়িত fn1() ফাংশনকে কল করে। এই কল কার্যকর হবে না যদি এই ফাইল, mainFile.c-এ fn1() এর প্রোটোটাইপ ঘোষণা করা না হয়।
যদি পাঠক উপরের দুটি ফাইল কোড করে থাকেন, তবে তিনি নিম্নলিখিত কমান্ডের সাহায্যে একটি এক্সিকিউটেবল ফাইলে প্রোগ্রামটি কম্পাইল করতে পারেন:
জিসিসি প্রধান ফাইল। গ অন্য ফাইল। গ - যে তাপমাত্রা exeলাইনের শেষে এন্টার কী টিপে। আউটপুটটি 'দেখা' হওয়া উচিত।
গ্লোবাল ফাংশন
mainFile.c ফাইলটি নিম্নরূপ পরিবর্তন করা যেতে পারে:
# অন্তর্ভুক্ত করুনচর * fn1 ( চর * stri ) ;
চর * fn ( চর * সেন্ট ) {
ফিরে সেন্ট ;
}
int প্রধান ( )
{
চর * str1 = fn1 ( 'দেখা' ) ;
printf ( '%s \n ' , str1 ) ;
চর * str2 = fn ( 'গ্লোবাল এর ফাইলে দেখা গেছে।' ) ;
printf ( '%s \n ' , str2 ) ;
ফিরে 0 ;
}
এখন, ফাইলটিতে দুটি গ্লোবাল ফাংশন রয়েছে, mainFile.c. ফাংশনের নাম হল fn() এবং main()। dfn() একটি বিশ্বব্যাপী ফাংশন। এটি একটি কল দ্বারা main() ফাংশন স্থানীয় সুযোগে দেখা গেছে। C ভাষায়, গ্লোবাল স্কোপে একটি গ্লোবাল ফাংশন, যেমন fn(), সহজভাবে একটি ফাংশন হিসাবে উল্লেখ করা হয়। এছাড়াও, গ্লোবাল ফাংশন, fn1() ফাইলে, otherFile.c কে সহজভাবে একটি ফাংশন হিসাবে উল্লেখ করা হয়।
যদি দুটি ফাইল temp.exe এ পুনরায় কম্পাইল করা হয়, তাহলে আউটআউট হবে:
দেখাগ্লোবাল এর ফাইলে দেখা গেছে।
দ্রষ্টব্য: fn() এর ফাংশন সংজ্ঞা অন্য ফাইল, otherFile.c-এও দেখা যেতে পারে। এটি অর্জন করতে otherFile.c এ এর প্রোটোটাইপ ঘোষণা রয়েছে, নিম্নরূপ:
চর * fn ( চর * সেন্ট ) ;একটি সেমিকোলন দিয়ে শেষ। এই কার্যকলাপ, পাঠকের জন্য একটি অনুশীলন হিসাবে বাকি.
স্ট্যাটিক ফাংশন সঠিক
উপরের আলোচনা থেকে, একটি ফাংশন তার ফাইলের যেকোন স্কোপে (যেকোন জায়গায়) দেখা যায়। এটি একটি ভিন্ন ফাইলেও দেখা যেতে পারে, একই প্রোগ্রামের জন্য, যদি এটির প্রোটোটাইপ সেখানে ঘোষণা করা হয়। ফাইলের সংজ্ঞা যাতে অন্য ফাইলে দেখা না যায় তার জন্য সংরক্ষিত শব্দ, স্ট্যাটিক দিয়ে সংজ্ঞাটিকে স্ট্যাটিক করুন। এমনকি যদি এর প্রোটোটাইপটি ভিন্ন ফাইলে ঘোষণা করা হয়, তবুও এটি ভিন্ন ফাইলে দেখা যাবে না। প্রোগ্রাম ফাইল এমনকি কম্পাইল হবে না. এটি ব্যাখ্যা করার জন্য, ফাইলের বিষয়বস্তু, otherFile.c হতে দিন:
স্থির চর * fn1 ( চর * stri ) {ফিরে stri ;
}
এই ফাইলের একই বিষয়বস্তু, otherFile.c, আগের মতই, কিন্তু পূর্ববর্তী সংরক্ষিত শব্দের সাথে, স্ট্যাটিক। mainFile.c ফাইলের বিষয়বস্তু একই থাকে। কমান্ড দিয়ে প্রোগ্রাম ফাইল কম্পাইল করার চেষ্টা করা হলে,
জিসিসি প্রধান ফাইল। গ অন্য ফাইল। গ - যে তাপমাত্রা exeকম্পাইলার একটি ত্রুটি বার্তা জারি করবে, যার অর্থ প্রোগ্রামটি কম্পাইল করেনি। এমনকি যদি বিভিন্ন ফাইলে প্রোটোটাইপ ঘোষণাটিও স্ট্যাটিক দ্বারা পূর্বে থাকে, তবে প্রোগ্রাম ফাইলগুলি এখনও কম্পাইল হবে না।
উপসংহার
সি ভাষায় একটি ফাংশন সংজ্ঞা, একটি বিশ্বব্যাপী ফাংশন। এই ফাংশনটিকে এর ফাইলের যেকোনো স্কোপে বলা যেতে পারে (দেখা)। এই ফাংশনটিকে একটি ভিন্ন ফাইলে দেখতে, যেমন মূল ফাইলে, এর প্রোটোটাইপ ঘোষণাটি সেই ভিন্ন ফাইলে টাইপ করতে হবে। এই ফাংশনটিকে বিভিন্ন ফাইলে দেখা থেকে রোধ করার জন্য সংরক্ষিত শব্দের পূর্বে স্ট্যাটিক দিয়ে এর সংজ্ঞাকে স্ট্যাটিক করুন।