עבור לתוכן

overload ב - C

Featured Replies

פורסם

מישהו יודע כיצד ניתן לעשות overload ב C רגיל (לא ++)

זאת אומרת שפונקציה מסויימת תקבל מספר שונה של פרמטרים ותפעל לפי מספר הפרמטרים שקיבלה?

פורסם

אין כזו אפשרות ב-C. השיטה הנפוצה היא פשוט לתת שמות שונים לפונקציות.

אופציה אחרת היא לכתוב פונקציה שיכולה לקבל מספר משתנה של ארגומנטים, ככה:

http://www.cprogramming.com/tutorial/lesson17.html

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

פורסם

אני חושב שהוא דיבר על va_list כמו ב-printf.

תחפש ברשת, הנה משהו שחפרתי מגוגל: http://bobobobo.wordpress.com/2008/01/28/how-to-use-variable-argument-lists-va_list/

וגם http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html

בקצרה:

1) מגדירים פונקציה שמקבלת פרמטרים ומסתיימת ב- ...

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

3) בתוך הפונקציה משתמשים ב-va_list va_arg והחברים שלהם.

ארכיון

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

דיונים חדשים