慎用英文变量名

来源:互联网 发布:巡检器如何下载数据 编辑:程序博客网 时间:2024/04/29 22:49

今天为了解决一个bug折腾了大半天。

这个bug非常怪异,一个类里的一个变量,没人动它居然值就变了,gdb调试了半天找不到哪里有修改。

偶然打印出变量的地址才发现异常之处。

cc_tajk tajk;
char swrq[20];

这两行是定义的全局变量,然后swrq的地址居然和tajk类里一个成员变量的地址重合了,奇怪的是在主模块里是正常的,

tajk类在一个单独的.cpp中,在tajk类中打印输出这两个地址,就会发现这两个地址是重合的。

最后没办法把代码拷贝到一个新的目录,然后把不相干的部分逐渐去掉,检查问题是不是还存在。

用这样的办法居然发现主模块里去掉

#include <errno.h>

居然就好了,再加上这个头文件又出同样的错误了。

再仔细查找代码,发现tajk类里有个成员变量

int errno;

难道是这个变量名引起的?赶快把这个变量名换掉,果然就正常了。

当初用这个变量名的时候觉得类成员变量而且只是errno这样的名字,以为没问题,没想到还是有冲突。

看来还是用拼音字母做变量名要好些吧。


0 0
原创粉丝点击