条款53:不要轻忽编译器的警告
2009-10-28 14:00
127 查看
条款53:不要轻忽编译器的警告
Pay attention to compiler warnings.
许多程序员习惯性地忽略编译器警告.他们任务如果是问题真的很严重的话,编译器就应该给一个错误提示信息而
不是警告信息.这种想法看起来似乎很合理,但是在C++语言上,我觉得编译器作者对代码即将会爆发的事情应该比你有
更加深入的理解,你说呢?下面我举的这个例子是多多少少在大部人身上都发生过一个错误:
struct B{
virtual void f()const;
};
struct D:public B{
virtual void f();
};
我现在的编译器给出了这样的警告信息:warning:D::f()hides virtual B::f()
大部分经验不足的程序员对这个信息的反映都是一副不以为然的态度,他们认为,D::f遮掩了B::f显然是发生了名
字遮掩现象,给出这样的信息很正常啊!错,此刻的编译器是在试图告诉你声明于B中的f并未在D中被重新声明,而是被整
个遮掩了(Item 33描述为什么会遮掩).如果忽略这个警告,几乎肯定导致错误的程序行为,然后是许多的调试行为,只
为了找出编译器早就试图告诉你的事情.
你应该知道,编译器给出的信息往往和它们'看起来'的意义十分不同!不管怎么样,在你打发某个警告信息之前,请
确定你了解它试图说出的精确意义.It is very important.
你也应该知道,警告信息天生和编译器相依,不同的编译器有不同的警告标准.所以草率编程后依赖编译器为你指出
错误,是非常不明智的选择.
请记住:
■ 严肃对待编译器发出的警告信息.努力在你i的编译器的最高(最严厉)警告级别下争取'无任何警告'的荣誉。
■ 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同,一旦移植到另一个编译器上,你原
本依赖的警告信息有可能消失.
Pay attention to compiler warnings.
许多程序员习惯性地忽略编译器警告.他们任务如果是问题真的很严重的话,编译器就应该给一个错误提示信息而
不是警告信息.这种想法看起来似乎很合理,但是在C++语言上,我觉得编译器作者对代码即将会爆发的事情应该比你有
更加深入的理解,你说呢?下面我举的这个例子是多多少少在大部人身上都发生过一个错误:
struct B{
virtual void f()const;
};
struct D:public B{
virtual void f();
};
我现在的编译器给出了这样的警告信息:warning:D::f()hides virtual B::f()
大部分经验不足的程序员对这个信息的反映都是一副不以为然的态度,他们认为,D::f遮掩了B::f显然是发生了名
字遮掩现象,给出这样的信息很正常啊!错,此刻的编译器是在试图告诉你声明于B中的f并未在D中被重新声明,而是被整
个遮掩了(Item 33描述为什么会遮掩).如果忽略这个警告,几乎肯定导致错误的程序行为,然后是许多的调试行为,只
为了找出编译器早就试图告诉你的事情.
你应该知道,编译器给出的信息往往和它们'看起来'的意义十分不同!不管怎么样,在你打发某个警告信息之前,请
确定你了解它试图说出的精确意义.It is very important.
你也应该知道,警告信息天生和编译器相依,不同的编译器有不同的警告标准.所以草率编程后依赖编译器为你指出
错误,是非常不明智的选择.
请记住:
■ 严肃对待编译器发出的警告信息.努力在你i的编译器的最高(最严厉)警告级别下争取'无任何警告'的荣誉。
■ 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同,一旦移植到另一个编译器上,你原
本依赖的警告信息有可能消失.
相关文章推荐
- 条款53:不要轻忽编译器的警告(Pay attention to complier warnings.)
- Effective C++ 条款53 不要轻忽编译器的警告
- effective C++ 条款 53:不要轻忽编译器的警告
- 条款53:不要轻忽编译器的警告
- 条款53:不要轻忽编译器的警告
- Effective C++ -----条款53:不要轻忽编译期的警告
- 《Effective C++》读书笔记之item53:不要轻忽编译器的警告
- 【53】不要轻忽编译器的警告
- 不要轻忽编译器的警告
- 读书笔记 effective c++ Item 53 关注编译器发出的警告
- 【学习】【Effective C++】条款48: 重视编译器警告
- 条款23: 必须返回一个对象时不要试图返回一个引用
- 编译器的warning往往不只是警告
- 警告:绝对不要把pi转换为二进制!!!
- Visual Studio中打开编译器中有虚函数的类的析构函数不是虚函数的警告——/we4265
- keil MDK编译器警告和错误详解
- 不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++
- 读书笔记_Effective_C++_条款六:若不想使用编译器自动生成的函数,就该明确拒绝
- 任正非第三次警告华为冬天来临 告诫员工不要飘飘然
- 条款21:必须返回对象的时候,不要妄想使其返回reference