我在标题中定义了一个结构,如下所示:
#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 都是正确且有意义的。