Effective C++ 09 杂项讨论

9. 杂项讨论

条款 53:不要轻忽编译器警告

许多程序员习惯性地忽略编译器警告。他们认为,毕竟,如果问题很严重,编译器应该给一个错误信息而非警告信息,不是吗?

一旦从某个特定编译器的警告信息获得经验,你将学会了解,不同的信息意味什么 —— 那往往和它们“看起来”的意义十分不同!尽管一般认为,写出一个在最高警告级别下也无任何警告信息的程序最是理想,然而一旦有了上述的经验和对警告信息的深刻理解,你倒是可以选择忽略某些警告信息。不管怎样说,在你打发某个警告信息之前,请确定你了解它意图说出的精确意义。这很重要。

记住,警告信息天生和编译器相依,不同的编译器有不同的警告标准。所以草率编程然后依赖编译器为你指出错误,并不可取。

请记住:

  • 严肃对待编译器发出的警告信息。努力在你的编译器的最高警告级别下争取“无任何警告”的荣誉。
  • 不要过度依赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你原本依赖的警告信息有可能消失。

条款 54:让自己熟悉包括 TR1 在内的标准

C++98 列入的 C++ 新标准程序库主要成分有:

  • STL,覆盖容器、迭代器、算法、函数对象、各种容器适配器和函数对象适配器。
  • iostream,覆盖用户自定义缓冲功能、国家化 I/O 以及预先定义好的对象 cin、cout、cerr 和 clog。
  • 国际化支持,包括多区域能力。想 wchar_t 和 wstring 等类型都对促进 Unicode 有所帮助。
  • 数值处理,包括复数模板和纯数值数组。
  • 异常阶层体系,包括 base class exception 以及 derived class logic_error 和 runtime_error,以及更深继承的各个 class。
  • C89 标准程序库。

TR1 详细叙述了 14 个新组件,统统都放在 std 命名空间,更正确地说是在其嵌套命名空间 tr1 内。TR1 组件有:

  • 智能指针;
  • tr1::function;
  • tr1::bind;
  • Hash table;
  • 正则表达式;
  • Tuple;
  • tr1::array;
  • tr1::mem_fn;
  • tr1::reference_wrapper;
  • 随机数生成工具;
  • 数学特殊函数;
  • C99 兼容扩充;
  • Type trait;
  • tr1::result_of。

请记住:

  • C++ 标准程序库的主要机能是由STL、iostreams、locales 组成。并包含 C99 标准程序库。
  • TR1 添加了智能指针(例如 tr1::shared_ptr)、一般化函数指针(tr1::function)、hash-based 容器、正则表达式)以及另外 10 个组件的支持。
  • TR1 自身只是一份规范。为获得 TR1 提供的好处,你需要一份实物。一个好的实物来源是 Boost。

条款 55:让自己熟悉 Boost

Boost 是一个 C++ 开发者集结的社群,也是一个可自由下载的 C++ 程序库群,它的网址是 https://boost.org 。

请记住:

  • Boost是一个社群,也是一个网站。致力于免费、源码开发、同僚复审的 C++ 程序库开发。Boost 在 C++ 标准化过程过程中扮演深具影响力的角色。
  • Boost 提供许多 TR1 组件实现品,以及其他许多程序库。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值