07-06-2005, 20:57
|
|
|
|
חבר מתאריך: 04.08.02
הודעות: 4,468
|
|
...
אולי תתן לנו קצת יותר פרטים, שנכול לעזור לך? (שפת תכנות שאתה עובד וכו)
(אם במקרה אתה עובד עם C/CPP, אז הסבר קצר)
בC/CPP כל העניין של מאקרו, עובד סביב פקודות קדם מעבד.
בכללי, קיימים שני סוגים של מאקרו: מקרוא מסוג פונקציה ומסוג אובייקט.
כשקריאה למאקרו שלך מופיע בקוד מקור (לא כולל שורות קדם מעבד שמתחילות עם #)*, הקדם מעבד מחליף את הקריאות האלו, בגוף המאקרו.
מאקרו מסוג פונקציה מקבל פרמטרים, ולכן תוכל להתייחס אליו כפונקציה ולשלוח אליו פרמטרים.
כמו שאמרנו, הקדם מעבד מחליף את הקריאה למאקרו בגוף המאקרו, לכן הפונקציות שמתקבלות הן בעצם מדמות inline functions (כמובן, שאם במקרה השפת תכנות שאתה עובד בה, תומכת בinline functions, אין לך למה להשתמש במקרוא מסוג פונקציה).
מאקרו מסוג אובייקט, הוא מקרוא שלא מקבל פרמטרים (דהה.. ), לרוב משתמשים בו ע"מ לייצור קבועים סמליים, "מילות מפתח" (לא מדוייק אבל שיהיה) חדשות ועוד.
הערות:
אם תוכל להימנע משימוש במקרואים, אז עשה זאת.
אם לא תשים לב להגדרת המאקרואים ולשימוש בהם, אתה עלול למצוא את עצמך בבעיה.
כמובן יש להדגיש שמה שנכתב בחלק הזה, נוגע לC/CPP בלבד.
*יש מקרים מסויימים, בהם גם בתוך שורות קדם מעבד, תוחלף המאקרו, בגופו.
#define מגדיר מקרוא
#undef מוחק את הגדרת המקרוא
(סוף להסבר קצר לגביי מאקראוים בC/CPP)
אם במקרה אתה עובד עם שפת תכנות אחרת, תכתוב אותה פה, ואני בטוח שמישהו אחר יישמח לעזור.
בהצלחה.
|