עבור לתוכן

c|מבקש הסבר על קוד

Featured Replies

פורסם

תם : לא עדיף לעשות את זה באמצעות קבוע ? (const)

מה ההבדל ?

פורסם
  • מחבר
שוב, define# מגדיר לקומפיילר, לפני שהוא עושה קומפילציה לקוד, לעבור על כל הטקסט ולעשות replace לכל מופע של GRAMS_PER_POUND במקרה שלך למספר 454. תחשוב שאתה יכול לעשות את זה ידנית - עם שימוש ב-define הרבה יותר קריא לדעת שזה GRAMS_PER_POUND ולא איזה מספר "קסם" כמו 454 שמישהו אחר לא ידע מה המספר הזה בכלל מייצג.

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

ולמה אתה מתכוון שאתה אומר מופע?

פורסם
תם : לא עדיף לעשות את זה באמצעות קבוע ? (const)

מה ההבדל ?

כן, עדיף להשתמש בקבוע (const) על פני define.

ההבדל הוא ש-define זה, כפי שנאמר כאן, כמו לבצע search and replace לפני הקומפילציה. לדוגמה אם יש כזה דבר:

#define PI 3.14

אז לפני הקומפילציה, בכל מקום שבו מופיעה בקוד המילה PI, היא תוחלף ב 3.14.

לעומת זאת, אם מגדירים:

const double PI = 3.14;

אז זה מגדיר משתנה בשם PI מטיפוס double שהערך שלו הוא 3.14.

פורסם
כן, עדיף להשתמש בקבוע (const) על פני define.

עדיף לדעת מה היתרונות והחסרונות של כל אחד ולבחור בהתאם.

פורסם

אני מתקשה לראות מהם היתרונות של הגדרה כזו בעזרת הpreprocessor.

ולפות"ש: אני ממליץ לך ללמוד שפת תכנות אחרת כשפה ראשונה לפני שתקפוץ למים העמוקים של C.

פורסם

לפעמים במערכות embeded הזיכרון המיותר שמוקצה חשוב.

יתרון מעשי יותר - שרשור של כמה הגדרות בתור string (למשל הגדרת סיומת של קובץ).

עניין נוסף - יש קומפיילרים בהם עם קצת מאמץ תוכל לשנות ערך של const (עם מצביעים למשל). define הוא בטוח קבוע.

ארכיון

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

דיונים חדשים