2012-09-27 7 views
13

तो यहाँ कुछ मैक्रो मैं बनाया है कर रहे हैं:सी: विस्तृत मैक्रो टोकन के साथ चिपकाया जा रहा है

#define MODULE_NAME moduleName 
#define MODULE_STRUCT MODULE_NAME ## _struct 
#define MODULE_FUNCTION(name) MODULE_NAME ## _ ## name 

उन परिभाषाओं के बाद, मैं निम्नलिखित विस्तार चाहते हैं तो होना: जब मैं

MODULE_STRUCT --> moduleName_struct 
MODULE_FUNCTION(functionName) --> moduleName_functionName 

हालांकि टोकन पेस्टिंग ऑपरेटरों को जोड़ें, MODULE_FUNCTION के भीतर MODULE_NAME का विस्तार और MODULE_STRUCT अब नहीं होता है ... ऐसा लगता है कि उन्हें एक साथ चिपकाते समय MODULE_NAME को शाब्दिक स्ट्रिंग के रूप में माना जाता है।

क्या इसके आसपास कोई रास्ता है?

उत्तर

15

सी में टोकन पेस्टिंग ऑपरेटर ## के संचालन का विस्तार नहीं किया गया है।

विस्तार प्राप्त करने के लिए आपको दूसरे स्तर की संकेत की आवश्यकता है।

#define CAT(x, y) CAT_(x, y) 
#define CAT_(x, y) x ## y 
संबंधित मुद्दे