मैं इस प्रकार एक struct एक शीर्षक में परिभाषित किया गया है:वैश्विक स्तर पर या बाहरी रूप से एक संरचना घोषित करते समय मुझे segfaults क्यों मिलता है?
#define LC_ERR_LEN 300
typedef struct dLC_ERRMSG {
short nr;
short strategy;
char tx[LC_ERR_LEN];
} LC_ERRMSG;
कौन सा मैं जैसे मेरी कोड में उपयोग:
LC_ERRMSG err;
char *szError;
szError = strerror(sStatus);
snprintf(err.tx,LC_ERR_LEN," %s - %s",szFilename,szError);
/* do something with our error string */
काम करता है। हालांकि, मैं वैश्विक स्तर पर LC_ERRMSG err;
घोषित करता हूं - यानी फ़ंक्शन के बाहर इसका उपयोग किया जाता है, या यहां तक कि extern LC_ERRMSG err;
(जो मेरा मूल इरादा था, क्योंकि मैं केंद्रीय स्थान में त्रुटि स्थिति को पढ़ने में सक्षम होना चाहता हूं), कोड segfaults snprintf कॉल।
क्या आप मुझे कोई संकेत दे सकते हैं क्यों?
ddd मुझे बताता है कि जब वैश्विक स्तर पर घोषित किया जाता है, या कम से कम प्रारंभिक और पठनीय बाहरी घोषित किया जाता है तो स्मृति को सभी शून्यों में प्रारंभ किया जाता है। SzFilename, szError और LC_ERR_LEN मान सभी सही और सार्थक हैं।
यह सी की तरह दिखता है, सी ++ नहीं? –
और परिवर्तनीय नाम एक बिल्ली की तरह दिखते हैं जो कीबोर्ड पर चल रहा था। –
यह एक हंगरी बिल्ली है, क्योंकि मुझे यकीन है कि फ्रीकोज़ीड की बिल्ली भी थी। – maxwellb