में तर्कों को विभाजित करना कुछ विरासत कोड जिन पर मैं काम कर रहा हूं, एक मैक्रो है जो एक अल्पविराम से अलग सूची देता है जिसका उद्देश्य फ़ंक्शन तर्क के रूप में उपयोग किया जाता है। यह बदसूरत है, लेकिन कॉन्फ़िगरेशन फ़ाइल में इनमें से कई शामिल हैं और अब इसे बदलना मुश्किल होगा।सी ++ प्रीप्रोसेसर
#define XY1 0,0
#define XY2 1,7
...
void fun_point(x,y);
fun_point(XY1);
यह तब तक ठीक काम करता है जब तक यह एक कार्य कहलाता है। हालांकि, जब पैरामीटर के साथ एक और मैक्रो कॉल करने के लिए कोशिश कर रहा है, पूरी स्ट्रिंग विभाजन के बजाय एक तर्क अल्पविराम में के रूप में दो तर्क
#define MAC_POINT(x,y) (x+y)
MAC_POINT(XY1) #not expanded by preprocessor
वहाँ XY परिभाषाओं को बदले बिना इस समस्या के लिए एक समाधान है में माना जाता है?
/मुझे विरासत कोड – icabod
पर मुट्ठी हिलाता है मुझे जीसीसी मैनुअल में कोई चर्चा या यह समस्या मिली: http://gcc.gnu.org/onlinedocs/cpp/Argument-Prescan.html#Argument-Prescan – Quantum7