שפת C - מה ההבדל בין void main ל- int main - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שפת C - מה ההבדל בין void main ל- int main


iz

Recommended Posts

אחרי 5 שנים שלא נגעתי בשפת C הורדתי Dev c++

כתבתי סתם תוכנית בסיסית כדי לראות שהקומפיילר עובד אבל הוא מציג לי שגיאה שאני רשום void main

ורק שאני רושם int main אפשר לקמפל את התוכנית

מה ההבדל בינהם ?

הנה דוגמא לתוכנית :

#include<stdio.h>
int main()
{
printf("Hello HW!");
}

ושאני כותב תוכנית עם יותר פקודות ומשתנים התוכנית רצה גם עם void וגם עם int

תודה על העזרה :xyxthumbs:

קישור לתוכן
שתף באתרים אחרים

טוב , תודה

שמתי לב שתמיד שאני רושם int במקום void זה עובד

אני פשוט זוכר שלמדתי C בבית ספר זה היה עם void ( עבדנו שם עם קומפיילרים ישנים)

יש לזה הסבר ? למה פתאום void כבר לא תקין? סתם מסקרנות...

קישור לתוכן
שתף באתרים אחרים

ה"פתאום" הזה קרה לפני 20 שנה (זה חלק מתקן C90, שנוצר ב-1990, כפי שמעיד עליו שמו).

רק בשנים האחרונות קומפיילרים התחילו להחמיר מבחינת התקנים, ולכן קומפיילרים ישנים יותר הרשו להשתמש ב-void main (כאמור, יש כאלה שהזהירו מזה, אבל עדיין נתנו לך לקמפל). הבעיה היא שבבתי ספר לא יודעים ללמד, ועד היום מלמדים אנשים לכתוב בצורה לא תקנית.

קישור לתוכן
שתף באתרים אחרים

הרבה ספרים בעברית הם די זבל.

סתם שתדע, היו פלטפורמות (ישנות ונידחות, לא דברים שסביר שתתקל בהן) שבהן תוכנה שנכתבה עם void main לא היתה עוברת link במקרה הטוב, או קורסת ביציאה במקרה הרע.

קישור לתוכן
שתף באתרים אחרים

כנראה שהבעיה היא לא רק בבתי ספר, כי גם בספרים שהורדתי מופיע void main

תודה :xyxthumbs:

חלק מהספרים עתיקים ולא מעודכנים לתקן, והכותבים של חלק מהם אפילו לא טרחו להתאים את עצמם לתקן של זמן הכתיבה (יש מלא ספרים שמשתמשים בconio.h, שהוא אף פעם לא היה סטנדרטי)

ככלל אצבע, תמיד תשתדל לכתוב קוד תקני. כשמתכנתים משהו רציני, אף פעם אי אפשר לדעת אם פתאום ירצו לקחת את זה לפלטפורמה אחרת, או לקמפל דרך קומפיילר אחר, ואז זה חתיכת כאב ראש לתקן את העסק.

קישור לתוכן
שתף באתרים אחרים

מעבר לפורטביליות, יש עוד יתרונות תחזוקיתיים לכתיבה בשיטות סטנדרטיות ועם קוד תקני וספריות סטנדרטיות:

* חוסכת באגים (כיוון ששיטות, ספריות וקוד סטנדרטי עברו הרבה משתמשים ולכן יהיו יחסית מובנים היטב ועם מעט באגים.

* הרבה פעמים קלה יותר למתכנתים אחרים להבין מיד, כך שזה מקל על תחזוק הקוד.

* מקטינה את הדרישות על סביבת הקומפילציה - יש פחות רכיבים אשר הקוד תלוי בהם, ולכן קל יותר להרים סביבת על מחשב אחר, לבן אדם אחרץ

* גם אחרי הרבה שנים, סביר להניח שרכיבים וכלים סטנדרטיים יהיו מתוחזקים ועדכניים. לדוגמא אין שום קומפיילר מודרני (או אפילו בן 10 שנים) שמכיל conio, אבל אני יכול לקמפל כמעט בלי בעיה קוד C סטנדרטי בן 20 שנה (ואפילו יותר!).

כמובן שלפעמים עדיין צריך וכדאי לעבוד עם דברים פחות סטנדרטיים, אבל זו צריכה להיות בחירה מודעת.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...