思维不可太死板: 在程序中加上某行后有编译问题, 去掉后就没有编译问题, 能否断定:一定是本行出了问题?

        在某大型软件中, 原来代码的编译是没有问题的, 加了一行后, 就有编译问题了, 注释掉这行, 就没有编译问题了。 可是, 我仔细看了一下, 发现加的这行是没有问题的。那到底是哪里的问题呢?千万不能像学生时代那样死抠, 教科书和考试都是有板有眼, 死板。 作为一个程序员, 要想方设法解决问题, 要灵活, 拒绝死板。

        下面, 我来简化模拟(原来现场较复杂)一下案发现场:


        原来编译没有问题的程序为:

#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;才是罪魁祸首。 之所以在第一个程序中没有表现出错误, 是因为那时没有用到它而已。


      一个有某种疾病基因的人, 平常没有接触到诱发因素(比如吃牛肉), 那么他是安全的。  一旦吃了牛肉后, 他生病了,  我们不能武断地认为牛肉有问题。 


      软件开发, 经验和灵活性确实非常重要, 谁能说不是呢?


你可能感兴趣的:(思维不可太死板: 在程序中加上某行后有编译问题, 去掉后就没有编译问题, 能否断定:一定是本行出了问题?)