我有一個頭文件中定義一個結構如下:爲什麼在全局或外部聲明結構時會出現段錯誤?
#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;
(這是我的初衷,因爲我希望能夠讀出中央位置的錯誤狀態),代碼段錯誤snprintf調用。
你能給我一些線索爲什麼嗎?
ddd告訴我,當全局聲明時,內存被初始化爲全零,或者至少在聲明extern時被初始化和可讀。值szFilename,szError和LC_ERR_LEN都是正確和有意義的。
這看起來像C,而不是C++? – 2010-07-01 13:59:32
變量名稱看起來像一隻貓正在穿過鍵盤。 – 2010-07-01 14:19:29
這是一隻匈牙利貓,因爲我確定Freakzoid的貓也是。 – maxwellb 2010-07-01 14:24:13