1 现象:问题描述
接口CICS后台服务程序,业务受理时需要向消息队列中插入数据,网管程序从消息队列中采集数据进行入库,入库时报错,存储过程执行失败。
3 结论:解决方案及效果
在该类对象构造函数增加对该成员的初始化
CMsgCommProc::CMsgCommProc()
{
duration = 0;
nmtraceflag = 0;
nmflag = 0;
strcpy(nmkeyfile, "/tux80/apps/DataCollect.KEY");
msgcnt = 0;
memset(sendbuf, 0, sizeof(sendbuf));
}
程序重新编译,问题得到解决。
4 经验总结:预防措施和规范建议
类构造函数是对类成员的初始化,编程过程时刻要注意,没有经过初始化的变量,直接使用,会出现意想不到的问题,程序可能会正常运行,但是有时候就会出现问题,正常运行往往使得开发人员忽略了其问题所在,所以希望大家养成习惯,正确编写类的构造函数,避免在一些不该出现的问题上浪费时间,提高工作效率,降低开发成本。
6 考核点
是否遗漏对类成员的变量初始化。
7 试题
char msg[100],subsys[10],region[10],opcode[16],starttime[16], sendbuf[1024];
int duration, success;
memset(msg,0,sizeof(msg));
strcpy(subsys,"REC");
strcpy(region,"534");
strcpy(opcode,"TyczChargeFee");
strcpy(starttime,"20060620104924");
duration=169;
success=1;
sprintf(msg,"%-3s%-3s%-14s%-14s%-10ld%d;",subsys,region,opcode,starttime,duration,success);
strcat(sendbuf,msg);
printf("send message:%s\n",sendbuf);
上面这段代码的输出如下:
send message:象^PREC534TyczChargeFee 20060620104924169 1;
请问可能造成这个问题的原因是:(C)
阅读(371) | 评论(0) | 转发(0) |