随笔分类 -  C++

内存序之编译器指令重排序
摘要:环境: Windows平台:win7_64旗舰版、VS2019 Linux平台:CentOS Linux relase 7.2.1511、GCC_4.8.5-4 场景: 为了提高性能,编译器会对指令进行重新排序,在多线程环境下指令的乱序执行会造成无法预测的行为。 开始: 一、编译器指令重排序实例 i 阅读全文

posted @ 2023-04-19 21:30 dchao 阅读(149) 评论(0) 推荐(0) 编辑

std::numeric_limits::epsilon
摘要:转载自:https://tool.oschina.net/uploads/apidocs/cpp/en/cpp/types/numeric_limits/epsilon.html #include <cmath> #include <limits> #include <iomanip> #inclu 阅读全文

posted @ 2021-01-27 15:44 dchao 阅读(729) 评论(0) 推荐(0) 编辑

C++函数委托
摘要:环境: win7_x64旗舰版、VS2015企业版 场景: C++标准库提供std::function类来将一个对象的调用操作封装在一个对象内部,然后可以委托调用,但是有一些弊端,例如下面的需求: 我们需要将调用操作封装存储到一个map中,来实现观察者模式或信号槽,由于std::function是在 阅读全文

posted @ 2019-04-30 21:26 dchao 阅读(2008) 评论(0) 推荐(0) 编辑

C++字节对齐与位域
摘要:环境: win7_x64旗舰版、VS2015企业版 一、字节对齐: 说明:为了提高 CPU 的存储速度,编译器会对 struct 和 union的存储进行优化,即进行字节对齐。 1. 指定对齐参数值:通过#pragma pack(push, n)设置。 2. 自身对齐参数值:每个内部类型自身也都有一 阅读全文

posted @ 2019-03-03 23:21 dchao 阅读(908) 评论(0) 推荐(0) 编辑

使用GDB调试将符号表与程序分离后的可执行文件
摘要:环境: Centos7.3、GCC4.8.5 适用场景: 由于调试信息比较大,通常将程序分离为可执行程序和符号信息文件,只对外发布可执行程序,需要调试时再将符号信息文件附加。 一、创建可执行程序: use_library.cpp #include <iostream> #include "use_l 阅读全文

posted @ 2018-10-09 08:54 dchao 阅读(8039) 评论(0) 推荐(0) 编辑

在windows上编译apr库
摘要:环境: win7_x64旗舰版、VS2015企业版、CMake3.8 一、下载apr相关库 1.1)expat下载地址:https://github.com/libexpat/libexpat/releases/download/R_2_1_0/expat-2.1.0.tar.gz 1.2)apr库 阅读全文

posted @ 2018-07-15 17:58 dchao 阅读(4119) 评论(2) 推荐(0) 编辑

使用Visual Studio 2017 C++17模块(module)特性
摘要:环境: win7_x64旗舰版、VS2017企业版 一、安装VS2017 1.1 安装VS2017时,必须要勾选“使用C++的modules开发”选项 1.2 安装成功后,会在VS安装目录Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14 阅读全文

posted @ 2017-09-08 15:07 dchao 阅读(9130) 评论(1) 推荐(1) 编辑

使用Visual Studio 2017开发Linux程序
摘要:环境: win7_x64旗舰版、VS2017企业版、VMware10.0.2、CentOS7 在CentOS7上首先需要安装gcc、g++和gdbserver,这里就不多说 一、安装VS2017 1.1 安装VS2017时,必须要勾选“使用C++的Linux开发”工具集 二、创建Linux项目 2. 阅读全文

posted @ 2017-08-03 17:08 dchao 阅读(48802) 评论(13) 推荐(5) 编辑

C++侵入式链表
摘要:<!-- body { font-family:"Microsoft YaHei"; font-size:16px } p { font-size:16px } } --> C++标准模板库中的list是非侵入式的链表,当我们通过对象来删除容器中的对象时,需要从头到尾查找一次得到iterator,最 阅读全文

posted @ 2015-10-25 16:18 dchao 阅读(1910) 评论(0) 推荐(0) 编辑

C++模板之类型与数据绑定
摘要:有时候我们需要将类型与一些数据进行绑定,例如我们一般通过单例,将字符串与一个函数关联(一般称之为注册),之后通过字符串创建相关联的对象class A {public: static A* Create() { return new A(); }}; 然后像这样:Instance::Regist... 阅读全文

posted @ 2015-10-22 22:29 dchao 阅读(1704) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示