سؤال

لماذا تم تعيين نوع إرجاع نقطة الإدخال إلى void في ج always دائما بالإحباط, وأزيلت في وقت لاحق من قبل معيار ويحظر من قبل المجمعين الحديثة?لماذا يعتبر ممارسة سيئة?

الآن ، كما أفهم ج # وجافا على حد سواء تسمح لنوع العودة نقطة الدخول ليكون void أي

static void main(String[] args) /* Java */
static void Main(string[] args) /* C# */

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

اللغات الأخرى التي هي (فقط المقصود سوف تنجح في هذا العقد، على الأقل) خلفاء ممكن من ج like مثل د لغة البرمجة أو فالا تسمح أيضا void main().لذلك كما ترون ، أشك في أن المجتمع سي removed إزالته من المعيار لأنه كان غامضا جدا أو لا يحظى بشعبية.

لذا سؤالي هو ، لماذا أزال المجتمع ج Remove void main()?ما هو الخطأ في ذلك?

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

المحلول

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

لغة مثل جافا ، عندما تم تصميمه ، لم يكن لديها أي مجموعة من التعليمات البرمجية الموجودة التي تحتاج إلى البقاء متوافقة مع.لذلك ، يمكن للمصممين اختيار void main() وتتطلب استخدام System.exit() لرموز الخروج غير الصفرية.

لذا ، فإن الشيء الذي سيكون "خطأ" في الاختيار void main() لمعيار ج be سيكون أنه كسر التعليمات البرمجية الموجودة التي من المتوقع أن تستخدم return وقيمة رمز الخروج من main().

نصائح أخرى

ج has لديها أبدا مسموح void main(), ، على الرغم من أن بعض المجمعين قد يسمحون بذلك إما كامتداد أو لمجرد أنهم لا يقومون بتشخيصه.

وبالمثل ج لم يسمح أبدا void main() بخلاف التمديد;نفس معيار 1989 الذي قدم void الكلمة تعريف تعريفين القياسية ل main: int main(void) و int main(int argc, char *argv[]).

اللغات الأخرى تسمح بذلك لأنها لغات أخرى.

لا توجد ميزة خاصة في القدرة على الكتابة void main() بدلا من int main().لا تحتاج حتى إلى إرجاع قيمة بشكل صريح;السقوط في نهاية main ما يعادل return 0; (في ج starting ، وفي ج بدءا من ج 99).

تريد عموما معرفة حالة الخروج من البرنامج الخاص بك.هذا هو السبب في أن لديك int main() -- يمكنك إرجاع حالة الخروج الخاصة بك.

إنه خطأ لأن هذا ليس ما يحدده معيار ج legal على أنه قانوني main.لا أحد يهتم بما تحدده اللغات الأخرى.لبرامج ج C ، فقط معيار ج relevant هو ذات الصلة ، وتقول int.

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