لماذا نحن بحاجة إلى استخدام `الباحث الرئيسي` وليس `الفراغ` الرئيسية في C++?[مكررة]

StackOverflow https://stackoverflow.com/questions/449851

سؤال

هذا السؤال سبق الجواب هنا:

لماذا نحن بحاجة إلى استخدام int main و لا void main في C++?

هل كانت مفيدة؟

المحلول

الإجابة المختصرة هي أن معيار C++ يتطلب ذلك main() لكي ترجع int.

كما تعلم على الأرجح، فإن قيمة الإرجاع من main() يتم استخدام الوظيفة بواسطة مكتبة وقت التشغيل كرمز الخروج للعملية.يدعم كل من Unix وWin32 مفهوم العدد الصحيح (الصغير) الذي يتم إرجاعه من العملية بعد انتهائها.إرجاع قيمة من main() يوفر طريقة واحدة للمبرمج لتحديد هذه القيمة.

نصائح أخرى

معظم أنظمة التشغيل التقرير إلى المستخدم أو عملية الاستدعاء ، إذا طلب كانت ناجحة أم لا.هذا هو مفيدة بشكل خاص في البرمجة ، حيث السيناريو يمكن أن فرع مشروط (if-then) على نتائج البرنامج.شيء على غرار:

// pseudo-code
screenscrape  http://mydatasource.com > results.txt
if errorlevel == 0 then
   processfile results.txt
else
   echo Screen Scraping Failed!
end if

هذا نتيجة الحالة يتم عن طريق إرجاع القيمة الرئيسية.

في حين أن بعض المجمعين تسمح الفراغ الرئيسية من أجل التناسق والبساطة ، ANSI القياسية يتطلب واحدة النموذج الرئيسي:

int main(int argc, char *argv[]);

لأنه في ج ، والحجج يتم تنظيف من قبل المتصل ، المؤلف الرئيسي يمكن إهمال أن تعلن أو عملية الحجج argc & argv.ومع ذلك ، إذا كان الإعداد-إجراءات الاتصال الرئيسية نتوقع الباحث قيمة الإرجاع ، و بدلا من ذلك لا تجد واحد السلوك غير معروف.

الجواب القصير:

  • قيمة الإرجاع الرئيسي هو مفيد للبرمجة.
  • الإعداد و التنظيف الروتينية التي الاحتجاج الرئيسي في حاجة ثابت لاستخدام واجهة.

السبب الرئيسي للتغيير

الفراغ الرئيسي () { }

ل

انت مين() { }

في الإصدارات اللاحقة كان ل إعلام بالخطأ حدث في البرنامج أثناء التنفيذ ل نظام التشغيل التي تعمل عليها

return 0;

تحديد البرنامج الذي تم تنفيذه بنجاح إذا تم إرجاع أي رقم بدلاً من 0 فهذا يعني حدوث خطأ ما خطا بالكود هو الذي عاد بواسطة main.إذا كنت تعمل على IDE انظر في سجل البناء إذا كانت العودة الرئيسية 0 يتم عرضها بشكل طبيعي

Process terminated with status 0

وإلا فإنه يعرض رمز الحالة باللون الأحمر مما يعني حدوث خطأ

من ويكيبيديا:

تصبح القيمة التي يتم إرجاعها من الوظيفة الرئيسية هي حالة الخروج من العملية، على الرغم من أن معيار C ينسب فقط معنى محددًا لقيمتين: EXIT_SUCCESS (تقليديا صفر) و EXIT_FAILURE.يتم تحديد معنى قيم الإرجاع المحتملة الأخرى من خلال التنفيذ.

كما هو الحال في لغة C، لأن العملية ستعطي نظام التشغيل رمز الخروج.

يمكنك إما استخدام

int main (int argc, char ** argv)
{
  return (0);
}

أو

int main (int argc, char ** argv)
{
  exit (0);
}

هذا على الأقل في C89 IIRC.

نظرًا لأن int هو رمز الإرجاع الذي يمكن للبرنامج إرجاعه إلى نظام التشغيل.

يمكنك الاستعلام عن هذه القيمة للتحقق مما إذا كانت العملية ناجحة.

كان هذا مفيدًا للغاية عند استخدام البرامج النصية لسطر الأوامر.

عندما نقوم بتنفيذ برنامجنا للتحقق من أنه يعمل بنجاح أم لا.لذلك عندما يرجع 0 فهذا يعني أنه صحيح وتم تشغيله بنجاح، وإذا أعاد 1 فهذا يعني أنه لم يتم تشغيله بنجاح وهذا int تخبر القيمة نظام التشغيل إذا تم تشغيل البرنامج بنجاح أم لا

ربما لأنه من المنطقي الخروج بشكل نظيف باستخدام رمز الحالة من main() طريقة.في Java، علينا محاكاة هذا باستخدام System.exit() وهو ليس كل هذا رشيقا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top