cpp
zd845101500
单片机、硬件设计、linux应用和驱动开发、搞机爱好者,尽量原创
展开
-
dll文件生成与使用
使用环境VS20191、生成dll创建工程时选择dll,工程命名testDll1会生成如下代码,作为dll文件被调用的入口// dllmain.cpp : 定义 DLL 应用程序的入口点。#include "pch.h"BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved原创 2020-08-15 15:47:02 · 677 阅读 · 0 评论 -
10、cpp模板编程
函数模板模板函数定义的一般形式如下所示:template <typename type> ret-type func-name(parameter list) { // 函数的主体 }示例:template <typename T>T Max (T a, T b) { return a < b ? b:a; } 类模板...原创 2020-08-15 15:33:40 · 344 阅读 · 0 评论 -
9、cpp自动类型推导
auto关键字的使用auto自动类型推断用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。 // 1. 自动帮助推导类型 auto a = 10; auto c = 'A'; auto s("hello"); 在模板中使用:decltype使用:int i = 4;decltype(i) j; //定义一个和i相同类型的变量j...原创 2020-08-15 15:33:36 · 189 阅读 · 0 评论 -
8、cpp类型转换
c++ typeid获取类型名在我的项目中,有这样一个需求:在socket(TCP协议)通信部分,需要根据不同的业务协议类型分别设置一个不同的block时间。而此时我已经拿到了指向该协议(数据)对象的(父类型)指针。那最简单的区分不同协议的方式就是使用c++的 typeid操作符。typeid操作符的作用就是获取一个表达式的类型。返回结果是const type_info&。不同编译器实现的type_info class各不相同。但c++标准保证它会实现一个name()方法,该方法返回类型名字原创 2020-08-15 15:33:31 · 521 阅读 · 0 评论 -
7、内存对齐新增关键字
1、第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。2、在数据成员完成各自对齐之后,类(结构或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。 很明显#pragma pack(n)作为一个预编译指令用来设置多少个字节对齐的。值得注意的是,n的缺省数值是按照编译器自身设置,一般为8,合法的数值分别是1、2、4、8、16。 即原创 2020-08-15 15:33:26 · 128 阅读 · 1 评论 -
6、cpp的静态断言static_assert
assert是运行期断言,它用来发现运行期间的错误,不能提前到编译期发现错误,也不具有强制性,也谈不上改善编译信息的可读性,既然是运行期检查,对性能当然是有影响的,所以经常在发行版本中,assert都会被关掉;使用static_assert,我们可以在编译期间发现更多的错误,用编译器来强制保证一些契约,并帮助我们改善编译信息的可读性,尤其是用于模板的时候。...原创 2020-08-15 15:32:52 · 213 阅读 · 0 评论 -
5、cpp的enum\union\inline\nullptr
1、enum枚举类型和C的差别,在定义变量时可省略 enum关键字enum o_type{o_1,o_2}/*C和C++98*/enum o_type a = o_1; //Co_type a = o_1; C++/*C++11之后定义enum,可指定枚举变量的数据类型*/enum class o_type:int {o_1,o_2}; //完整写法enum class o_type{o_1,o_2}; //简化enum o_type{o_1,o_2};原创 2020-08-15 15:32:43 · 163 阅读 · 0 评论 -
4、cpp的引用介绍及本质解析
1,引用的意义: 1,引用作为变量别名而存在,因此在一些场合可以代替指针; 1,变量的另一个表现形式; 2,交换函数时,可代替指针;示例1://交换变量值函数void swap(int &a,int &b){ int tmp; tmp = a; a = b; b = tmp;}int main(){ int x = 1,y = 2; swap(x,y);}示例2:in...原创 2020-08-15 15:33:20 · 671 阅读 · 0 评论 -
3、C和C++混合编程\调用
两种情况①C++调用C ②C调用C++。1、C++调用C在C的声明加入extern "C" {}例如如下代码,在编译时,此文件会被gcc编译。#ifdef __cplusplus extern "C" { #endif void start_convert(void); #ifdef __cplusplus } #endif编译过程输出2、C调用C++...原创 2020-07-28 09:53:27 · 88 阅读 · 0 评论 -
2、c++标准库
c++标准IO格式控制原创 2020-07-25 13:04:50 · 56 阅读 · 0 评论 -
1、cpp明命名空间的使用
命名空间有默认命名空间、匿名命名空间。原创 2020-07-24 09:59:44 · 230 阅读 · 0 评论