ضرورت تابع main - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ضرورت تابع main

+3 امتیاز

سلام.

من تازه کارم یه سوالی برام پیش اومده.frown

چرا تو هر کد C++ تابع main داریم؟sad

سوال شده آذر 2, 1392  بوسیله ی toopak (امتیاز 2,458)   16 47 66
دوباره تگ گذاری شد اردیبهشت 6, 1393 بوسیله ی BlueBlade

3 پاسخ

+3 امتیاز
 
بهترین پاسخ

البته در حالت عادی تو هر کد نه شما می تونید کتابخانه استاتیک و دینامیک بنویسید که اصلاً به main نیازی نداره ولی اگر کد host قصد داشته باشید بنویسید همانطوری که دوستان گفتند بایستی یک entry point داشته باشید چون از طریق آن هم پارامترهای خط فرمان رو از کاربر می گیرید و هم در واقع در صورت نیاز کدی را به سیستم عامل برگشت می دید مثل بعضی از دستورات linux.

نکته : البته راه های غیر اصولی هم وجود داره که شما این قضیه رو دور بزنید و تابع main رو ننویسید همانطوری که دوستان عرض کردند main برنامه هم همانند یک constructor عمل می کنه و میاد entry point توی crt0.c رو فراخوانی می کنه حال شما می تونید بدون main یک متغیر سراسری استاتیک تعریف کنید که constructor آن اولین نقطه در برنامه شما باشه.

پاسخ داده شده آذر 4, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد آذر 4, 1392 بوسیله ی BlueBlade
+3 امتیاز

چونکه توی هر برنامه باید تابعی باشه که هنگامی که شما برنامه رو اجرا میکنید اون اجرا بشه که بهش Entry Point میگن .

هر برنامه Entry Point داره که که تابع () main توی برنامه های ++C این کار رو انجام میده .

ولی خود Entry Point توی فایل های CRT پیاده سازی شده که تابع () main رو شما مینویسید و پیاده سازیش میکنید رو صدا میزنه .

پاسخ داده شده آذر 4, 1392 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
ویرایش شده آذر 4, 1392 بوسیله ی مصطفی ساتکی
+2 امتیاز
همیشه اینجوری نیست به طور کلی میتونیم بگیم توی هر پروژه ای حتما و فقط باید یک main وجود داشته باشه چون کامپایلر باید از یه جایی بفهمد که برنامه ما از کجا شروع میشود
پاسخ داده شده فروردین 29, 1393 بوسیله ی Fire360Boy (امتیاز 2,524)   6 24 43
چی همیشه اینجوری نیست ؟
توی فایل های اجرایی همیشه اینجوری هست!!
حالا شاید فایل های dll و .... همیشه اینجوری نباشه
...