פורסם 2014 באפריל 2011 שנים מחבר שוב, define# מגדיר לקומפיילר, לפני שהוא עושה קומפילציה לקוד, לעבור על כל הטקסט ולעשות replace לכל מופע של GRAMS_PER_POUND במקרה שלך למספר 454. תחשוב שאתה יכול לעשות את זה ידנית - עם שימוש ב-define הרבה יותר קריא לדעת שזה GRAMS_PER_POUND ולא איזה מספר "קסם" כמו 454 שמישהו אחר לא ידע מה המספר הזה בכלל מייצג.תקן אותי אם אני טועה define# בקוד הספציפי שהבאתי.זה שאני מכניס בקלט את המשקל וזה ממיר לגרם?.ולמה אתה מתכוון שאתה אומר מופע?
פורסם 2014 באפריל 2011 שנים תם : לא עדיף לעשות את זה באמצעות קבוע ? (const)מה ההבדל ?כן, עדיף להשתמש בקבוע (const) על פני define.ההבדל הוא ש-define זה, כפי שנאמר כאן, כמו לבצע search and replace לפני הקומפילציה. לדוגמה אם יש כזה דבר:#define PI 3.14אז לפני הקומפילציה, בכל מקום שבו מופיעה בקוד המילה PI, היא תוחלף ב 3.14.לעומת זאת, אם מגדירים:const double PI = 3.14;אז זה מגדיר משתנה בשם PI מטיפוס double שהערך שלו הוא 3.14.
פורסם 2014 באפריל 2011 שנים כן, עדיף להשתמש בקבוע (const) על פני define.עדיף לדעת מה היתרונות והחסרונות של כל אחד ולבחור בהתאם.
פורסם 2014 באפריל 2111 שנים אני מתקשה לראות מהם היתרונות של הגדרה כזו בעזרת הpreprocessor.ולפות"ש: אני ממליץ לך ללמוד שפת תכנות אחרת כשפה ראשונה לפני שתקפוץ למים העמוקים של C.
פורסם 2014 באפריל 2111 שנים לפעמים במערכות embeded הזיכרון המיותר שמוקצה חשוב.יתרון מעשי יותר - שרשור של כמה הגדרות בתור string (למשל הגדרת סיומת של קובץ).עניין נוסף - יש קומפיילרים בהם עם קצת מאמץ תוכל לשנות ערך של const (עם מצביעים למשל). define הוא בטוח קבוע.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.