ההבדל בין Inline למקרו ב- C ++
תוֹכֶן
מאקרו הוא הוראות המתרחבת בזמן כניסתו. ניתן גם להגדיר פונקציות, כמו מקרואים. באופן דומה, פונקציות הקו מתרחבות גם הן בנקודת ההקמה שלה. ההבדל העיקרי בין פונקציית הקו למאקרו הוא שה- פונקציות מוטבעות מורחבים במהלך אוסף, וה מקרואים מורחבים כאשר התוכנית מעובדת על ידי מעבד מקדים.
בואו ונבדוק את ההבדל בין קו למאקרו בעזרת תרשים השוואה.
- טבלת השוואה
- הגדרה
- הבדלים עיקריים
- סיכום
טבלת השוואה
בסיס להשוואה | בשורה | מאקרו |
---|---|---|
בסיסי | פונקציות מוטבעות מנותחות על ידי המהדר. | מעבדי המקרו מורחבים על ידי המעבד המקדים. |
תחביר | inline return_type פונקצית שם (פרמטרים) {. . . } | # הגדר macro_name char_sequence |
מילות מפתח בשימוש | בשורה | # הגדר |
מוגדר | ניתן להגדיר אותו בתוך הכיתה או מחוצה לה. | זה מוגדר תמיד בתחילת התוכנית. |
הערכה | זה מעריך את הטענה רק פעם אחת. | זה מעריך את הטיעון בכל פעם שמשתמשים בו בקוד. |
הרחבה | המהדר עשוי שלא להטמיע ולהרחיב את כל הפונקציות. | קבצי מאקרו תמיד מורחבים. |
אוטומציה | הפונקציות הקצרות המוגדרות בתוך הכיתה נעשות אוטומטית לפונקציות מוטבעות. | יש להגדיר פקודות מאקרו באופן ספציפי. |
גישה | פונקציית חבר מוטבעת יכולה לגשת לחברי הנתונים בכיתה. | מאקרו לעולם אינו יכול להיות חברי הכיתה ואינו יכול לגשת לחברי הנתונים בכיתה. |
סיום | הגדרת פונקציית הקו מסתיימת עם הסוגריים המתולתלים בסוף פונקציית הקו. | הגדרת המאקרו מסתיימת עם הקו החדש. |
ניפוי באגים | ניקוי ניפוי קל לפונקציה מוטבעת שכן בדיקת שגיאות נעשית במהלך הידור. | ניפוי באגים הופך לקשה עבור פקודות מאקרו מכיוון שבדיקת שגיאות אינה מתרחשת במהלך ההרכבה. |
כריכה | פונקציה מוטבעת קושרת את כל ההצהרות בגוף הפונקציה היטב כמו שגוף הפונקציה מתחיל ומסתיים בסוגריים המתולתלים. | מאקרו מתמודד עם בעיית הכריכה אם יש לו יותר מהצהרה אחת, מכיוון שאין לה סמל סיום. |
הגדרת Inline
פונקציה מוטבעת נראית כמו פונקציה רגילה, אך קדמה לה מילת המפתח "בשורה“. פונקציות מוטבעות הן פונקציות באורך קצר המורחבות בנקודת הפתיחה שלה במקום להיקרא. בואו נבין פונקציות מוטבעות באמצעות דוגמה.
# כלול בתוכנית לעיל הכרזתי והגדרתי, הפונקציה מאתחלת (), כפונקציה מוטבעת בכיתה "דוגמה". הקוד של פונקציית האתחול () יתרחב במקום בו הוא מופעל על ידי האובייקט של הכיתה "דוגמה". תצוגת הפונקציה (), שהוגדרה בדוגמה של הכיתה אינה מוכרזת כקובעת, אך היא עשויה להיחשב כקובעת על ידי המהדר, כ ב- C ++ הפונקציה המוגדרת בתוך הכיתה נעשית אוטומטית בקו על ידי המהדר בהתחשב באורך הפונקציה. מאקרו הוא "הנחיית מעבדים מקדימים". לפני ההרכבה התוכנית נבדקת על ידי המעבד המקדים ובכל מקום שהיא מוצאת את המאקרו בתוכנית, היא מחליפה את המאקרו בהגדרתו. מכאן שמאקרו נחשב כ"החלפה ". בואו ונלמד דוגמא מאקרו. # כלול בקוד לעיל הכרזתי על פונקציית מאקרו GREATER () שמשווה ומוצאת את המספר הגדול יותר של שני הפרמטרים. אתה יכול לשים לב שאין פסיק שיסיים את המאקרו שכן המאקרו מסתיימת רק על ידי השורה החדשה. מכיוון שמאקרו הוא רק תחליף, הוא ירחיב את קוד המאקרו במקום בו הוא מופעל. הפונקציות המשובצות משכנעות הרבה יותר מתפקוד המאקרו. C ++ מספק גם דרך טובה יותר להגדיר קבוע, המשתמש במילת מפתח "const".
הגדרת מאקרו
מסקנות: