הבדל מפתח - מאקרו לעומת פונקציה מוטבעת
מאקרו הוא קטע של קוד, שהוא הנחיית מעבד מראש. פונקציה מוטבעת היא תכונת שיפור C++ כדי למזער את זמן הביצוע של תוכנית. לכן, ההבדל העיקרי בין Macro ו-Inline Function הוא שמקרו נבדק על ידי המעבד המקדים בעוד שפונקציה מוטבעת נבדקת על ידי המהדר.
מאקרו כלול בתחילת התוכנית שלפניו סימן hash. כאשר יש את שם המאקרו בתוכנית, הוא מוחלף בתוכן המאקרו.
מהו מאקרו?
הקדם-מעבד היא תוכנית שמעבדת את קוד המקור לפני שהוא עובר דרך המהדר.הוא פועל באמצעות שורת הפקודה הקדם-מעבד או ההנחיות. בתוכנית, הנחיות המעבד ממוקמות בתוכנית המקור לפני התוכנית הראשית. לפני שקוד המקור עובר דרך המהדר, הוא נבדק על ידי הפרה-מעבד עבור הנחיות קדם-מעבד. להנחיות הקדם-מעבד יש את הסמל. בניגוד להצהרות אחרות, הן אינן מסתיימות בנקודה-פסיק. סוג אחד של הנחיית קדם-מעבד הוא מאקרו. בדרך כלל, פקודות המאקרו כתובות באותיות גדולות.
איור 01: תוכנית C++ עם מאקרו
לפי התוכנית לעיל, שורה 3 ושורה 4 מציינת פקודות מאקרו. בעת חישוב השטח, ערך ה-PI מוחלף באמצעות המאקרו המוגדר. בשורה 14, volume=CUBE(value), המעבד המקדים מרחיב את ההצהרה כ-volume=(ערךערךערך).מציאת הקוביה יכולה להיכתב כפונקציה, אבל כאן היא נכתבת באמצעות מאקרו. אם יש משפט כנפח=CUBE(x+y), אז הוא יתרחב לנפח=(x+yx+yx+y).
כמה אסימוני תכנות עלולים להיות מוטעים בקלות. ניתן להחליף אותם באמצעות פקודות מאקרו. לְמָשָׁל define AND &&, define OR ||. הגדרת מאקרו יכולה לכלול גם ביטויים כגון define AREA 45.56.
מהי פונקציה מוטבעת?
כאשר פונקציה נקראת, לקומפיילר לוקח קצת זמן לבצע אותה. אם הפונקציה אינה מורכבת במיוחד, המתכנת יכול להמיר את הפונקציה לפונקציה מוטבעת. עיין בתוכנית שלהלן.
איור 02: פונקציה ללא Inline
ההדפס_שלום הוא פונקציה פשוטה. זה מדפיס את המחרוזת "Hello" כאשר הפונקציה נקראת. זמן הביצוע של פונקציה זו הוא 0.187 שניות. בעת שימוש במילת המפתח המוטבעת כדלקמן, זמן הביצוע מצטמצם ל-0.064 שניות.
איור 03: פונקציה מוטבעת
לכן, על ידי שימוש במילת המפתח המוטבעת, זמן הביצוע מצטמצם. ייתכן שהפונקציות המוטבעות לא יפעלו אם יש לולאות, הצהרות מתג ואם הפונקציה מכילה משתנים סטטיים או פונקציות רקורסיביות.
מה ההבדל בין מאקרו לפונקציה מוטבעת?
מאקרו לעומת פונקציה מוטבעת |
|
מאקרו הוא קטע של קוד, שהוא הנחיית קדם-מעבד הנכללת בתחילת התוכנית שלפניה סימן hash. | פונקציה מוטבעת היא תכונת שיפור C++ כדי למזער את זמן הביצוע של תוכנית. |
זמן הערכה | |
במאקרו, הארגומנט מוערך בכל פעם שהוא בשימוש בתוכנית. | בתוך השורה, הארגומנט מוערך פעם אחת. |
נבדק על ידי | |
מאקרו נבדק על ידי המעבד המקדים. | פונקציה מוטבעת נבדקת על ידי המהדר. |
מילת מפתח | |
מרקו משתמש ב-define. | הפונקציה המוטבעת משתמשת במילת המפתח 'inline'. |
שימוש | |
מאקרו יכול לשמש להגדרת קבועים, ביטויים, להחלפת טקסט מילולי ולהגדרת פונקציות וכו'. | ניתן להשתמש בפונקציה מוטבעת כדי למזער את זמן הביצוע של התוכנית. |
סיום | |
מאקרו מסתיים עם השורה החדשה. | פונקציה מוטבעת מסתיימת עם הפלטה המתולתלת בסוף הפונקציה המוטבעת. |
נקודת ההגדרה | |
מרקו מוגדר בתחילת התוכנית. | פונקציה מוטבעת יכולה להיות בתוך המחלקה או מחוצה לה. |
סיכום – מאקרו לעומת פונקציה מוטבעת
מאמר זה דן בהבדל בין מאקרו לפונקציה מוטבעת. מושגים אלה משמשים בתכנות C++. ההבדל בין מאקרו לפונקציה מוטבעת הוא שמאקרו נבדק על ידי המעבד המוקדם בעוד שפונקציה מוטבעת נבדקת על ידי המהדר.