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সি এবং সি আসতে ++, ।