के साथ स्ट्रिंग शाब्दिक समेकित करना मैं स्ट्रिंग अक्षर और चार शाब्दिक को जोड़ना चाहता हूं। वाक्य रचना गलत होने के नाते, "abc" 'd' "efg"
एक संकलक त्रुटि renders:चार शाब्दिक
x.c:4:24: error: expected ',' or ';' before 'd'
अब तक मैं स्ट्रिंग के मूल्य शाब्दिक और चार शाब्दिक किया जा रहा है पता संकलन समय पर होने के बावजूद snprift (बेकार) का उपयोग करने के लिए है।
मैं
#define CONCAT(S,C) ({ \
static const char *_r = { (S), (C) }; \
_r; \
})
कोशिश की, लेकिन क्योंकि S
की अशक्त टर्मिनेटर छीन नहीं है यह काम नहीं करता। (संकलक चेतावनी देने के अलावा।)
वहाँ एक रास्ता एक मैक्रो
"abc" MACRO('d') "efg"
याMACRO1(MACRO2("abc", 'd'), "efg")
याMACRO("abc", 'd', "efg")
उपयोग करने के लिए लिखने के लिए है?
अगर कोई पूछता है कि मुझे ऐसा क्यों चाहिए: चार अक्षर एक लाइब्रेरी से आता है और मुझे स्ट्रिंग आउट को स्टेटस संदेश के रूप में प्रिंट करने की आवश्यकता है।
मैं * * उपयोग sprintf या किसी क्रम कार्यों करना चाहते हैं नहीं करना चाहती। रनटाइम विधि कॉल को नियोजित करने वाले किसी भी उत्तर न दें। – kay
यदि शाब्दिक पुस्तकालय से आता है, तो आप इसे कैसे एक्सेस कर रहे हैं? क्या यह लाइब्रेरी हेडर फ़ाइल द्वारा प्रदान किया गया एक मैक्रो है? –
हां, यह एक हेडर फ़ाइल से आता है। – kay