我有一个头文件中定义一个结构如下:为什么在全局或外部声明结构时会出现段错误?
#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