首页 | 归档 | 分类 | 标签 | 关于 |
|
编译命令行
1 | GCC: g++ -std=c++17 -W -Wall -Wfatal-errors 文件名 |
好书推荐
1 | 入门介绍 |
在项目中放上 .clang-format
这个文件,就可以处理代码的格式化了。
clang-format 的使用:https://www.cnblogs.com/__tudou__/p/13322854.html
mac 上安装clang-tidy 比较麻烦,如下安装
https://stackoverflow.com/questions/53111082/how-to-install-clang-tidy-on-macos
较 clang-tidy 轻量的工具,运行速度快。它和clang-tidy 的重点不太一样:它强调的是发现代码可能出现问题的地方,而不太着重代码风格问题,两者功能并不完全重叠。有条件的情况下,这两个工具可以一起使用。
1 |
|
编译:GCC:g++ -DBOOST_TEST_DYN_LINK test.cpp -lboost_unit_test_framework
我们在包含单元测试的头文件之前定义了 BOOST_TEST_MAIN。如果编译时用到了多个源文件,只有一个应该定义该宏。多文件测试的时候,我一般会考虑把这个定义这个宏加包含放在一个单独的文件里(只有两行)
1 | class scoped_thread { |
https://github.com/amrayn/easyloggingpp
这些功能点值的一提:
1 | template <typename T> |
上述代码中这种惯用法保证了强异常安全性:赋值分为拷贝构造和交换两步,异常只可能在第一步发生;而第一步如果发生异常的话,this 对象完全不受任何影响。无论拷贝构造成功与否,结果只有赋值成功和赋值没有效果两种状态,而不会发生因为赋值破坏了当前对象这种场景。
不过 auto_ptr 将它传递给另一个对象之后,就不再拥有这个对象了。
1 | template <typename T> |