विंडोज़ के तहत-डी कंपाइलर परिभाषित चर से स्ट्रिंग शाब्दिक बनाने के लिए कैसे करें, मेरे पास एक पर्यावरण चर है जिसमें विंडोज-शैली पथ है। मैं अपने कार्यक्रम में उस पथ को बनाना चाहता हूं और इसे प्रिंट करना चाहता हूं। तो यदि मेरा पथ c: \ top है, तो मैं इसे -DTOP = $ (TOP) का उपयोग करके कंपाइलर में पास करता हूं। नोट मैं इसे संकलक में पास करने से पहले इसे c: \\ शीर्ष में परिवर्तित नहीं कर सकता।विंडोज़ पथ
#define WRAP1(X) #X
#define WRAP(X) WRAP1(X)
char path[] = WRAP(TOP);
:
char path[]="c:\\top";
मैं सिर्फ stringafication ऑपरेटर का उपयोग नहीं कर सकते हैं:
#define TOP=c:\top
मैं के बराबर हैं:
अभी, मैं के बराबर है यह केवल "c: \ top" स्ट्रिंग में परिणाम देता है जो संकलक दृश्य को बचने के अनुक्रम के रूप में देखता है (यानी \ t)।
मुझे लगता है कि एक स्ट्रिंग अक्षर बनाने के लिए एक संभावित समाधान होगा, लेकिन अन्य समाधान भी ठीक होंगे। वहां एक स्ट्रिंग शाब्दिक निर्माण करने के लिए मैक्रो का उपयोग करने के लिए है कि लाभ होगा एक रास्ता है:। "या()
char path[] = R"foo(c:\top)foo";
अब तक, मेरे सभी प्रयास के रूपांतरों को शामिल कारणों से विफल हो या \
धन्यवाद।
"नोट मैं इसे संकलक में पास करने से पहले इसे c: \\ शीर्ष में परिवर्तित नहीं कर सकता" - क्यों? –
क्यों नहीं '-DTOP = R "foo ($ (TOP)) foo"' इसके बजाय? संपादित करें: उद्धरणों को बचने की आवश्यकता हो सकती है क्योंकि यह एक कमांड लाइन विकल्प है, जैसे: '-DTOP =" R "" foo ($ (TOP)) foo "" – Cameron
मैं कस्टम संकलन वातावरण में हूं I बदल नहीं सकते जब मैं-डी निर्दिष्ट करता हूं तो मैं अतिरिक्त उद्धरणों का उपयोग नहीं कर सकता। कंपाइलिंग पर्यावरण कंपाइलर को अतिरिक्त अनुक्रमों को पार्स करने के लिए उद्धरणों का भी उपयोग कर रहा है। – shol74