1. 程式人生 > >慎用英文變數名

慎用英文變數名

今天為了解決一個bug折騰了大半天。

這個bug非常怪異,一個類裡的一個變數,沒人動它居然值就變了,gdb除錯了半天找不到哪裡有修改。

偶然打印出變數的地址才發現異常之處。

cc_tajk tajk;
char swrq[20];

這兩行是定義的全域性變數,然後swrq的地址居然和tajk類裡一個成員變數的地址重合了,奇怪的是在主模組裡是正常的,

tajk類在一個單獨的.cpp中,在tajk類中列印輸出這兩個地址,就會發現這兩個地址是重合的。

最後沒辦法把程式碼拷貝到一個新的目錄,然後把不相干的部分逐漸去掉,檢查問題是不是還存在。

用這樣的辦法居然發現主模組裡去掉

#include <errno.h>

居然就好了,再加上這個標頭檔案又出同樣的錯誤了。

再仔細查詢程式碼,發現tajk類裡有個成員變數

int errno;

難道是這個變數名引起的?趕快把這個變數名換掉,果然就正常了。

當初用這個變數名的時候覺得類成員變數而且只是errno這樣的名字,以為沒問題,沒想到還是有衝突。

看來還是用拼音字母做變數名要好些吧。