#define

KKnDoIt

New member
הסימן # לא עושה דבר, הוא חלק

ממילת המפתח #define. במילים אחרות: הסימן # אינו אופרטור.
 
לא הבנת אותי

אני מדבר על האופרטור #x שמשתמשים בו בתוך ה #define, כמו שיש שם את ## בשביל לחבר בין הטקסטים
 

אלדד28

New member
כי....

"b" יתורגם ל-"b" - כלומר, מחרוזת שהיא b. b# יתורגם ל-"הערך של b". למשל,
#define a(b) #b printf(a(Hi!!!)); -----> printf ("Hi!!!");​
 

אלדד28

New member
אם כתבת b#, והעברת

xyz בתור פרמטר למקרו, יהיה לך "xyz" בכל מקום שיש בו b# בתרגום של המקרו.
 

eyalbd

New member
זה נקרא stringify

או stringize. הסמל # לפני ארגומנט הופך למחרוזת C למשל בדוגמא הבאה:
#define DEBUG_OUT(a) cout << #a " = " << (a) << endl Then: DEBUG_OUT(x); ====> cout << "x" " = " << (x) << endl; DEBUG_OUT(a+b); ====> cout << "a+b" " = " << (a+b) << endl;​
כל זה מתבצע בשלב pre-processor דהיינו לפני שהקומפיילר מתחיל לעבוד. זהו שלב שבו ה PP מבצע include ומשנה טקסט בהתאם לdefine-ים שהוגדרו.
 
למעלה