va_start רוצה פרמטרים

  • פותח הנושא ASHY
  • פורסם בתאריך

ASHY

New member
va_start רוצה פרמטרים

רק מאורגמנטים של הפונקציה? כלומר, יש לי פונקציה המקבלת int ושלוש נקודות, שימוש בפונקציה va_start עם אותו הint יעבוד ללא בעיות. שימוש בפונקציה va_start עם int אחר השווה לint הראשון יגרור את ההודעה הזו:
warning: second parameter of `va_start' not last named argument​
ואז התוכנית עובדת נורמלי אז יש לי שתי שאלות: א. איך הפונקציה va_start יודעת שזה int שקיבלתי באורגמנט לפונקציה ולא int אחר? ב. איך אני מבטל את ההודעה המעצבנת הזו?
 

vinney

Well-known member
המם...

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

ASHY

New member
עכשיו רק מתוך סקרנות

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

vinney

Well-known member
מה זאת אומרת?

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

vinney

Well-known member
לא בהכרח

אם כי בUNIX זה יהיה די צפוי, בחלונאחס זה יהיה exception 0x5 המקבילה.
 

voguemaster

New member
וב-DOS ?

exception 0Dh!!
טוב די אני עייף מדי, מספיק עבודה להיום
 
למעלה