פורסם 2006 ביולי 1219 שנים טוב אז אני רק התחלתי C ויש לי קצת בסיס מפסקל אבל עדיין יש דברים שלא מובנים לי א) מה ההבדל בין void main() ל int main (void) ?הסוגריים הם אחרי הכתב כמובן פשוט כאן זה יוצא ככה ב) איך אני עושה חיבור משתנים ב printf ?יעני יש לי משתנה A ומשתנה B ואני רוצה לחבר אותם (בתור פעולת חשבון כמו 2+3) ובלי לבצע השמה במשתנה אחר C לדוגמא... (אם זה אפשרי) אההה... וד"א אני משתמש בקומפיילר של בורלנד
פורסם 2006 ביולי 1219 שנים 1) האחד מחזיר INT(בדרך כלל ערך שמצביע על סיבת היציאה מהתוכנית - אם ע"י שגיאה או יציאה תיקנית) והשני לא מחזיר ערך. 2)printf("%d", a+b);
פורסם 2006 ביולי 1219 שנים התקן אומר שהצורה היחידה היא int main(void) מכיוון שזה חוזר בסוף למערכת ההפעלה והיא צריכה לעשות עם זה דברים (למרות שאם אתה לא מחזיר כלום, הקומפיילרים נראה לי ישר שמים 0).
פורסם 2006 ביולי 1219 שנים לפי התקן של C מותר ל-main להחזיר void, הוא פשוט דואג תמיד להחזיר 0 במקרה זה.ב-C++, פונקצית ה-main חייבת להחזיר int (למרות שיש קומפיילרים שלא מחייבים).
פורסם 2006 ביולי 1219 שנים בדיוק ההפךהתקן של C שנקרא ANSI-C מחייב את main להחזיר int. נסה לקמפל בקומפיילר אמיתי של C (כמו gcc ביוניקס) ולא תצליח לקמפל עם voidב-C++ ה-main יכול לא להחזיר כלום כלומר void
פורסם 2006 ביולי 1219 שנים בדיוק מה שבאתי להראות: blah.c: In function `main': blah.c:2: warning: return type of 'main' is not `int' כפי שאמרתי אפשר לקמפל, אולי עם pedantic ו ansi אולי אי אפשר
פורסם 2006 ביולי 1219 שנים ההגדרה הסטנדרטית של main היאint main(int argc, char *argv[])argc הוא מספר הפרמטרים שסביבת ההרצה מעבירה ו- argv זה מערך של הפרמטרים עצמם.רוב הקומפיילרים מאפשרים להשמיט אותם.
פורסם 2006 ביולי 1219 שנים זה קשור לתקשורת של התוכנית עם מערכת ההפעלה אשר מעבירה לה את הפרמרטים (גם כשאתם לא נותנים, עדיין argv[0] מכיל את שם התהליך) ומצפה ל int בשביל לדעת את ערך החזרה (0 יציאה תקינה, אחרת שגיאה).
פורסם 2006 ביולי 1319 שנים קצת סדר בבלאגן.תלוי במערכת ההפעלה ובקומפיילר, שימוש ב-void main יכול לגרום ל:1) שגיאת linkage2) תקלות מוזרות3) שום דבר4) warningגם ב-C וגם ב-C++ הפונקציה main חייבת להחזיר int. כל דבר אחר הוא פשוט לא נכון, גם אם הוא עובד לכם היום עם הקומפיילר שלכם ומערכת ההפעלה שלכם.http://www.parashift.com/c++-faq-lite/newbie.html#faq-29.3
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.