עבור לתוכן

מילים שמורות ב C שהשימוש בהם נדיר

Featured Replies

פורסם

למדתי את כל שפת C, וגם כתבתי מספר פרוייקטים קטנים בעזרתו.

לא מזמן נזכרתי שיש עוד מילים שמורות שכמעט ולא משתמשים בהם שאני לא יודע איך להפעיל אותם.

המילים הם:

asm

auto

inline

register

restrict

volatile

אני רוצה לדעת איחך להשתמש בהם.

אני אשמח מאוד אם תוכלו לעזור לי בעיניין :-)

תודה רבה על כל עזרה,

יוסף אור

פורסם

asm: מאפשר לך להכניס קוד אסמבלי בתוך התכנית.

auto: חסר משמעות, כל משתנה הוא ככה תמיד.

inline: לקריאה לפונקציות יש תקורה מסויימת - העברת המשתנים לפונקציה, קפיצה למקום אחר בקוד ואז חזרה למקום המקורי. אם הפונקציה מאוד קצרה (לדוגמה, אם זו פונקציה של שורה אחת) אז לפעמים לקומפיילר יותר יעיל "להדביק" את הקוד של הפונקציה במקום לקרוא לה. זה יכול להגדיל את הנפח של התכנית, אבל לייעל אותה מבחינת זמן ריצה. כששמים inline בהגדרה של פונקציה, זה "ממליץ" לקומפיילר לבצע את הייעול הזה (הוא עדיין לא חייב, ויש מקרים שבהם inline בכל מקרה לא יעשה כלום).

register: מבקש מהקומפיילר להחזיק את המשתנה באוגר, בשביל לעבוד איתו יותר מהר. זה גם די מיותר, כי בד"כ הקומפילר מספיק חכם לעשות את זה בעצמו.

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

volatile: אומר שמשתנה כלשהו יכול להשתנות מחוץ לתכנית, ולכן להימנע מלבצע ייעולים לגביו (כי הם יכולים לגרום לכך שהתוכנית תשתמש בערך לא נכון שלו).

פורסם
  • מחבר

תודה רבה :-)

אתה יכול להרחיב מעט על volatile ? זה נשמע שימושי...

ועוד שאלה אחת: באמצעות asm אני יכול לכתוב קוד אסמבלי בלי להשתמש במהדר לאסמבלי ? ז"א, זה יכול לחסוך הורדת מהדר לאסמבלי...

תודה על העזרה :-)

פורסם

אתה יכול להרחיב מעט על volatile ? זה נשמע שימושי...

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

ולגבי asm, אני מניח שזה אפשרי, אבל זה לא יתן לך את החופש של לכתוב תכנית שלמה באסמבלי.

פורסם

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

זה חשוב כשעובדים עם חומרה, או עם קוד (תשתיתי) מרובה מעבדים וחוטים. אחד בהתוצאות של שימוש ב-volatile זה שזה מבטל הרבה אופטימיזציות לגבי המשתנה, ולפעמים זה נוח.

volatile היא תכונה low level ורוב האנשים לא צריכים להשתמש בה.

ארכיון

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

דיונים חדשים