在某大型软件中, 原来代码的编译是没有问题的, 加了一行后, 就有编译问题了, 注释掉这行, 就没有编译问题了。 可是, 我仔细看了一下, 发现加的这行是没有问题的。那到底是哪里的问题呢?千万不能像学生时代那样死抠, 教科书和考试都是有板有眼, 死板。 作为一个程序员, 要想方设法解决问题, 要灵活, 拒绝死板。
下面, 我来简化模拟(原来现场较复杂)一下案发现场:
原来编译没有问题的程序为:
#define N 10;
int main()
{
return 0;
}
我加了一行后的程序为(编译有误):
#define N 10;
int main()
{
int a = N * N;
return 0;
}
开始定位的时候, 总是去怀疑int a = N * N; 其实 #define N 10;才是罪魁祸首。 之所以在第一个程序中没有表现出错误, 是因为那时没有用到它而已。
一个有某种疾病基因的人, 平常没有接触到诱发因素(比如吃牛肉), 那么他是安全的。 一旦吃了牛肉后, 他生病了, 我们不能武断地认为牛肉有问题。
软件开发, 经验和灵活性确实非常重要, 谁能说不是呢?