vlambda博客
学习文章列表

思考|编译器会出错么?

首先,编译器也是程序,是程序就会有bug,虽然编译器也是大公司的高级程序员写的,但或多或少也会有各种各样的错误。

所以当我写代码遇到莫名其妙的问题时候,我总在怀疑是不是编译器出了问题。


实际上我也遇到过编译器的问题,只有一次。有一次用vs2013的时候,我死活编译不过boost库,最后将vs2013升级到updata5才成功了。这便是因为编译器的bug导致boost库发生问题。这个bug是由于模板函数导致的。

正常情况下我们编程,编译器是不会出现问题的。


在我编程过程中常有bug一周都解决不了,但是99%的情况下都是由于我的c++知识匮乏导致的,随着知识的变多,慢慢就理解错误了。


在c++使用过程中,最反人类的是模板函数,很多情况下无法让人理解,同样一个函数,需要在头文件中声明,在源文件中实现。也就是说,即使只做一件非常简单的事情,需要改动程序的好多地方,而且这几个地方互不关联,分布也非常散。如果没有非常好的命名习惯和良好的代码风格很快就不可维护了。


例如:

超长定义 模板函数

宏函数


这些实现了许多神奇的功能,但我有了源码根本不知道他在干什么,果然编程不是什么好活啊!!!!!!


结论:

1、珍爱生命,不要碰c++的模板函数,嗯,最好不要碰c++

2、会怀疑编译器会出错的,好好想想不都是你的错么?