इस कार्यक्रम पर विचार करें:मैं स्ट्रिंग को कैसे प्रिंट करूं जो __FILE__ सही तरीके से फैलता है?
#include <stdio.h>
int main() {
printf("%s\n", __FILE__);
return 0;
}
फ़ाइल का नाम के आधार पर, इस कार्यक्रम काम करता है - या नहीं। जिस मुद्दे का सामना कर रहा हूं वह यह है कि मैं वर्तमान फ़ाइल के नाम को एन्कोडिंग-सुरक्षित तरीके से प्रिंट करना चाहता हूं। मैं इस से निपटने के कैसे करूँ
?????????.c(3) : warning C4566: character represented by universal-character-name '\u043F' cannot be represented in the current code page (1252)
: हालांकि, मामले में फ़ाइल अजीब वर्ण जो वर्तमान कोड पेज में नहीं दर्शाया जा सकता, संकलक एक चेतावनी पैदावार (हक तो) है? मैं __FILE__
द्वारा दिए गए स्ट्रिंग को संग्रहीत करना चाहता हूं उदा। यूटीएफ -16 ताकि मैं रनटाइम पर किसी भी अन्य सिस्टम पर इसे सही ढंग से प्रिंट कर सकूं (संग्रहीत यूटीएफ -16 प्रतिनिधित्व को जो भी रनटाइम सिस्टम उपयोग करता है) में परिवर्तित करके। ऐसा करने के लिए, मुझे यह जानने की ज़रूरत है:
__FILE__
द्वारा दी गई स्ट्रिंग के लिए क्या एन्कोडिंग का उपयोग किया जाता है? ऐसा लगता है कि, कम से कम विंडोज़ पर, वर्तमान सिस्टम कोड पेज (मेरे मामले में, विंडोज -1252) का उपयोग किया जाता है - लेकिन यह अनुमान लगा रहा है। क्या ये सच है?- मैं बिल्ड समय पर अपने स्रोत कोड में उस स्ट्रिंग के यूटीएफ -8 (या यूटीएफ -16) का प्रतिनिधित्व कैसे कर सकता हूं?
मेरा वास्तविक जीवन उपयोग केस: मेरे पास एक मैक्रो है जो वर्तमान प्रोग्राम निष्पादन का पता लगाता है, वर्तमान स्रोत कोड/लाइन नंबर जानकारी को फ़ाइल में लिखता है। यह इस तरह दिखता है:
struct LogFile {
// Write message to file. The file should contain the UTF-8 encoded data!
void writeMessage(const std::string &msg);
};
// Global function which returns a pointer to the 'active' log file.
LogFile *activeLogFile();
#define TRACE_BEACON activeLogFile()->write(__FILE__);
इस मामले में टूट जाता है वर्तमान स्रोत फ़ाइल एक नाम जो वर्ण जो वर्तमान कोड, पृष्ठ द्वारा प्रदर्शित नहीं किए जा सकते है।
कौन सा संकलक? – Roddy
@ रोडी: मैं एमएसवीसी 9 का उपयोग कर रहा हूं, लेकिन मुझे g ++ 4.x –
के समाधान में भी रूचि है। यह एमएसवीसी 2015 में पूरी तरह से फंस गया है। माइक्रोसॉफ्ट सिर्फ एक कंपाइलर क्यों नहीं बना सकता है जो खराब नहीं होता है? – Owl