C স্ট্যান্ডার্ড লাইব্রেরী : হেডার ফাইল সমূহ

C স্ট্যান্ডার্ড লাইব্রেরীতে যে সব হেডার ফাইল সমূহ বিদ্যমান তারা উক্ত ভাষায় প্রোগ্রামিং করার সময় ব্যবহৃত অনেক প্রিডিফাইন্ড ফাংশন, ম্যাক্রো ধ্রুবক ও ডেটা টাইপ এর ডেফিনিশন বহন করে।

C++ যেহেতু C এরই সুপার সেট, সেহেতু C++ লাইব্রেরীতেও এই হেডার ফাইল সমূহ বিদ্যমান, তবে কিছু কিছু ক্ষেত্রে পার্থক্য আছে। যেমন:

১. প্রত্যেকটি হেডার ফাইলের নাম C হেডার ফাইলের মতই, তবে নামের শুরুতে 'c' যুক্ত হবে এবং শেষে '.h' ফাইল নেম এক্সটেনশন থাকবে না। উদাহরণস্বরূপ C এর হেডার ফাইল <stdlib.h> কে C++ এ <cstdlib> হিসেবে লিখা হয়।

২. C++ এ namespace এর ধারণা বিদ্যমান, যেটা C তে অনুপস্থিত। C এর অনুরূপ সকল C++ হেডারের সব উপাদানই 'std' নেমস্পেস এ ডিফাইন করা।

তবে C এর সাথে মানিয়ে নেবার জন্য, ট্রেডিশনাল হেডার ফাইলও (যেমন, stdlib.h) C++ লাইব্রেরীতে থাকে, যদিও C++ এ তাদের ব্যবহার বাঞ্ছনীয় নয়।

৩. wchar_t, char16_t, char32_t and boo হচ্ছে C++ এর মৌলিক ডেটা টাইপ। তাই C হেডারে এই টাইপগুলো ডিফাইন করা থাকলেও একই C++ হেডারে এইগুলো ডিফাইন করা থাকে না।  একই কথা <iso646.h> হেডারে উপস্থিত কিছু ম্যাক্রো ধ্রুবকের ক্ষেত্রেও প্রযোজ্য, যারা C++ এ কিওয়র্ড হিসেবে বিদ্যমান।

৪. নিচের ফাংশনগুলোর ডিক্লেয়ারেশন এ প্যারামিটার এর কিছুটা ভিন্নতা আছে C++ এ:

strchr, strpbrk, strrchr, strstr, memchr

<cstdlib> হেডারে ডিফাইন করা at_exit, exit and abort এর কিছু অতিরিক্ত ফিচার আছে C++ এ। Overloading এর ধারণা কেবল C++  এ আছে, তাই কিছু কিছু ফাংশনের ওভারলোডেড ভার্সন C++ এ বিদ্যমান যারা অতিরিক্ত/ভিন্ন টাইপের কিছু প্যারামিটার নিতে পারে, তবে একই ধরনের কাজ করে। যেমন, <cmath> হেডার ফাইলের ফাংশনগুলোর float and long double ভার্সন C হেডার ফাইল <math.h> এ অনুপস্থিত।  ঠিক তেমনি <cstdlib> এ abs and div এর long ভার্সন বিদ্যমান, যা <stdlib.h> এ অনুপস্থিত।

আমাদের আলোচনায় যে সব ফাংশন, ম্যাক্রো বা টাইপ কেবল C++ এ ব্যবহার যোগ্য, C তে নয় তাদের নামের পাশেই সেটা চিহ্নিত করা থাকবে।

আসুন এবার আমরা C লাইব্রেরীর হেডার ফাইল ও তাদের সংক্ষিপ্ত কাজের তালিকা দেখি।

ANSI C স্ট্যান্ডার্ড লাইব্রেরী



  • <assert.h> : ডায়াগনস্টিক লাইব্রেরী 
  • <ctype.h> : ক্যারেক্টার ক্লাস টেস্ট বা ক্যারেকটার নিয়ে কাজ করার লাইব্রেরী 
  • <errno.h> : এরর বা ত্রুটি বিষয়ক লাইব্রেরী
  • <float.h> : ফ্লোটিং পয়েন্ট ডেটা টাইপ সমূহের বিভিন্ন ধর্ম ও সীমা নির্ধারক লাইব্রেরী
  • <limits.h> : ইন্টিজার ডেটা টাইপ সমূহের বিভিন্ন ধর্ম ও সীমা নির্ধারক লাইব্রেরী
  • <locale.h> : লোকালাইজেশন (স্থান, কাল ও প্রথাগত বিভিন্ন পূর্বনির্ধারিত মান ও চিহ্ন) লাইব্রেরী 
  • <math.h> : গাণিতিক অপারেশন নিয়ন্ত্রক লাইব্রেরী
  • <setjmp.h> : নন লোকাল জাম্প লাইব্রেরী
  • <signal.h> : সিগনাল হ্যান্ডেল করার লাইব্রেরী
  • <stdarg.h> : অনির্দিষ্ট আর্গুমেন্ট ব্যবস্থাপনাকারী লাইব্রেরী 
  • <stddef.h> : স্ট্যান্ডার্ড ডেফিনিশন লাইব্রেরী 
  • <stdio.h> : স্ট্যান্ডার্ড ইনপুট ও আউটপুট লাইব্রেরী 
  • <stdlib.h> : স্ট্যান্ডার্ড ইউটিলিটি লাইব্রেরী 
  • <string.h> : C স্ট্রিং লাইব্রেরী 
  • <time.h> : সময় ও তারিখ বিষয়ক লাইব্রেরী


ISO90 C স্ট্যান্ডার্ড লাইব্রেরী


ANSI C লাইব্রেরীতে নিচের হেডারটি যুক্ত হয়েছেঃ


  • <iso646.h> : ISO646 নির্দেশনা অনুসারে কিছু অপারেটর এর পরিবর্তিত রূপ নির্ধারক লাইব্রেরী


ISO99 C স্ট্যান্ডার্ড লাইব্রেরি


ISO90 C স্ট্যান্ডার্ড লাইব্রেরী এর সাথে নিচের হেডারগুলো যুক্ত হয়েছেঃ


  • <stdbool.h> : C তে boolean ডেটা টাইপ ব্যবহারের জন্য
  • <stdint.h> : নতুন কিছু ইন্টিজার টাইপ ডেফিনিশন লাইব্রেরী 
  • <uchar.h> : ইউনিকোড ক্যারেকটার লাইব্রেরী 
  • <wchar.h> : ওয়াইড ক্যারেকটার লাইব্রেরী
  • <wctype> : ওয়াইড ক্যারেকটার ক্লাস টেস্ট বা ওয়াইড ক্যারেকটার নিয়ে কাজ করার লাইব্রেরী 




0 comments:

Post a Comment