main
ফাংশন বিশ্বব্যাপী নামস্থান একটি অ সদস্য ফাংশন হিসেবে ঘোষণা করতে হবে। এর অর্থ হ'ল এটি কোনও শ্রেণীর স্থিতিশীল বা অ-স্থিতিশীল সদস্য ফাংশন হতে পারে না, বা এটি কোনও নেমস্পেসে (এমনকি নামবিহীন নেমস্পেস )ও স্থাপন করা যাবে না।
নামটি main
বিশ্বব্যাপী নেমস্পেসের একটি কার্যকারিতা ব্যতীত সি ++ তে সংরক্ষিত নয়। main
গ্লোবাল নেমস্পেসে নয় এমন অন্যান্য জিনিস, শ্রেণি, ভেরিয়েবল, গণনা, সদস্য ফাংশন এবং সদস্যবিহীন ফাংশন সহ আপনি নামধারী অন্যান্য সত্তা ঘোষণা করতে পারেন ।
আপনি main
সদস্য ফাংশন হিসাবে বা কোনও নামস্থানে একটি ফাংশন ঘোষণা করতে পারেন , তবে এই জাতীয় main
ক্রিয়াকলাপটি প্রোগ্রামটি যেখানে শুরু হয় সেখানে নকশাকৃত ফাংশন হবে না ।
main
ফাংশন হিসাবে বলা যায় না static
বা inline
। এটি ওভারলোডও করা যায় না; main
গ্লোবাল নেমস্পেসে নামমাত্র একটি ফাংশন থাকতে পারে ।
main
আপনার প্রোগ্রামটিতে এই ফাংশনটি ব্যবহার করা যাবে না: আপনাকে main
আপনার কোডের কোথাও থেকে ফাংশনটি কল করার অনুমতি নেই, আপনাকে এর ঠিকানা নেওয়ার অনুমতি নেই are
রিটার্নের ধরণ main
অবশ্যই হবেint
। অন্য কোনও রিটার্নের ধরণের অনুমতি নেই (এই নিয়মটি সাহসের সাথে রয়েছে কারণ main
কোনও রিটার্নের ধরণের মাধ্যমে ঘোষিত ভুল প্রোগ্রামগুলি দেখা খুব সাধারণ বিষয় void
; এটি সম্ভবত main
ফাংশন সম্পর্কিত সবচেয়ে ঘন ঘন লঙ্ঘনকারী নিয়ম )।
এর দুটি ঘোষণা main
অবশ্যই মঞ্জুর করতে হবে:
int main() // (1)
int main(int, char*[]) // (2)
ইন (1) , সেখানে কোন প্যারামিটার আছে।
ইন (2) , সেখানে দুটি প্যারামিটার এবং তারা সাধারনত নামকরণ করা হয় argc
এবং argv
যথাক্রমে। argv
প্রোগ্রামে আর্গুমেন্ট উপস্থাপন করে এমন একটি স্ট্রিং সি অ্যারের পয়েন্টার। অ্যারে argc
যুক্তি সংখ্যা argv
।
সাধারণত, argv[0]
প্রোগ্রামটির নাম থাকে, তবে এটি সবসময় হয় না। argv[argc]
নাল পয়েন্টার হওয়ার গ্যারান্টিযুক্ত।
নোট করুন যেহেতু একটি অ্যারের ধরণের আর্গুমেন্ট (যেমন char*[]
) ছদ্মবেশে কেবলমাত্র একটি পয়েন্টার টাইপ আর্গুমেন্ট, তাই নিম্নলিখিত দুটি দুটি লেখার বৈধ উপায় (2) এবং তারা উভয়ই একই জিনিসটির অর্থ বোঝায়:
int main(int argc, char* argv[])
int main(int argc, char** argv)
কিছু বাস্তবায়ন অন্যান্য ধরণের এবং পরামিতির সংখ্যার অনুমতি দিতে পারে; এটি কী সমর্থন করে তা দেখতে আপনাকে আপনার প্রয়োগের ডকুমেন্টেশন চেক করতে হবে।
main()
সাফল্য নির্দেশ করতে শূন্য এবং ব্যর্থতা নির্দেশিত করতে শূন্য-শূন্য প্রত্যাশা করা হবে। আপনাকে এখানে স্পষ্টভাবে কোনও return
বিবৃতি লিখতে হবে না main()
: আপনি যদি main()
কোনও স্পষ্ট return
বিবৃতি না দিয়ে ফিরে যেতে দেন তবে এটি যেমন লিখেছেন তেমনই return 0;
। নিম্নলিখিত দুটি main()
ফাংশনের একই আচরণ রয়েছে:
int main() { }
int main() { return 0; }
এখানে দুটি ম্যাক্রো রয়েছে EXIT_SUCCESS
এবং এর EXIT_FAILURE
মধ্যে সংজ্ঞা দেওয়া হয়েছে যথাক্রমে সাফল্য এবং ব্যর্থতা নির্দেশ <cstdlib>
করেও ফিরে আসতে main()
পারে।
দ্বারা প্রত্যাবর্তিত মানটি ফাংশনে main()
প্রেরণ করা হয় exit()
যা প্রোগ্রামটি শেষ করে।
নোট করুন যে কেবলমাত্র কোনও হোস্ট করা পরিবেশ (অনানুষ্ঠানিকভাবে, এমন একটি পরিবেশ যেখানে আপনার একটি পুরো স্ট্যান্ডার্ড লাইব্রেরি রয়েছে এবং আপনার প্রোগ্রামটি চালিত একটি ওএস রয়েছে) জন্য সংকলন করার সময় এই সমস্তগুলি প্রয়োগ হয়। ফ্রিস্ট্যান্ডিং পরিবেশের জন্য একটি সি ++ প্রোগ্রাম সংকলন করাও সম্ভব (উদাহরণস্বরূপ, এম্বেডেড কিছু প্রকারের সিস্টেম), main()
সেক্ষেত্রে শুরু এবং সমাপ্তি পুরোপুরি বাস্তবায়ন-সংজ্ঞায়িত হয় এবং কোনও ফাংশন এমনকি প্রয়োজন নাও হতে পারে। আপনি যদি আধুনিক ডেস্কটপ ওএসের জন্য সি ++ লিখছেন তবে আপনি কোনও হোস্ট করা পরিবেশের জন্য সংকলন করছেন।
main
সি এবং সি আসতে ++, ।