![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 78
采石之人!
这个作者很懒,什么都没留下…
展开
-
kernel 中 container_of 的原理及使用介绍
文章目录kernel 中 container_of 的原理及使用介绍container_of 原理源码解析使用示例kernel 中 container_of 的原理及使用介绍container_of 原理container_of : 根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针。原型:#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mp原创 2020-09-14 23:23:25 · 510 阅读 · 0 评论 -
C语言中 offsetof 的使用
文章目录C语言中 offsetof 的使用头文件以及宏原型函数描述示例程序:C语言中 offsetof 的使用头文件以及宏原型 #include <stddef.h> size_t offsetof(type, member);函数描述 这个宏会返回一个结构体成员相对于结构体开头的字节偏移量(**经过结构对其之后**): - type 结构体名称 - 结构体成员名称 这个宏非常有用,由于结构体对其的问题,整个结构体的大小并不是所有成员大小原创 2020-09-14 23:21:44 · 4768 阅读 · 1 评论 -
c/c++ 基类析构函数为什么必须定义为虚函数?
文章目录c/c++ 基类析构函数为什么必须定义为虚函数?1 现象2 原因剖析3 扩展c/c++ 基类析构函数为什么必须定义为虚函数?1 现象在c++ 实现多态时,我们经常会用到用基类来操作派生类,这样多便于上层接口的统一,而把基类定义为虚函数,就是为了释放基类句柄时只析构基类而不析构派生类的情况发生。下面列举三种使用情况基类析构函数不是虚函数,不使用多态,创建派生类对象。基类析构函数不是虚函数,使用多态,创建派生类对象。基类析构函数是虚函数,使用多态,创建派生类对象。以上几种情况对应代码原创 2020-08-01 21:57:12 · 1090 阅读 · 0 评论 -
c++ STL 容器 中 swap的使用
文章目录c++ STL 容器 中 swap的使用vector容器中swap的使用c++ STL 容器 中 swap的使用vector容器中swap的使用主要涉及以下内容:size 和 capacity 区别swap的基本用法swap在缓存队列中的使用可以从下面代码中查看上述内容的解释#include <iostream>#include <vector>#include <stdio.h>void printVector(std::ve原创 2020-08-01 21:56:24 · 1394 阅读 · 0 评论 -
c++ explicit 关键字解析
c++ explicit 关键字解析c++ 关键字 explicit 只能用于修饰只有一个参数的类的构造函数,作用是表明该构造函数是显示的,而非隐式的,跟explicit相对的是另一个关键字 implicit ,意思是隐藏,类构造函数默认情况下即声明为 implicit总结explicit 关键字只需用于类内的单参数构造函数前面。由于无参数的构造函数和多参数的构造函数总是显示调用,这种情况在构造函数前加 explicit无意义goolse的c++规范中提到explicit的优点可以避免不合时宜的类原创 2020-08-01 21:55:15 · 317 阅读 · 0 评论 -
c++11 atomic 之 6种内存序
c++11 atomic 之 6种内存序原创 2020-02-14 10:09:03 · 472 阅读 · 0 评论 -
c++11 atomic 之 c-style接口使用
c++11 atomic 之 c-style接口使用atomic的c-style接口 :提供相同语义但是不使用诸如:template reference 和member fucntion 等c++特性,整个atomic接口有一个C-style 对等品,成为C standard的一份补充,C-style接口一般适用于需要在C和C++之间保持兼容的代码身上 。1、c-style变量下表列出了类型...原创 2020-02-12 22:22:35 · 512 阅读 · 0 评论 -
c++11 atomic 之 atomic 使用
c++11 atomic 之 atomic 使用1、atomic支持的数据类型atomic 原子操作支持bool、int、char等数据数据类型,但是不支持浮点数类型 ,下表为基本数据类型、c-style支持的类型、对应的atomic类型contained typeatomic c-stypeboolatomic_boolcharatomic_charsi...原创 2020-02-12 21:23:23 · 37853 阅读 · 0 评论 -
c++11 atomic 之 atomic_flag 使用
c++11 atomic 之 atomic_flag 使用c++11 引入了原子操作部分,为无锁编程提供了极大的便利,本系列博文主要涉及一下几个方面atomic_flag:c++11 <atomic> 头文件中最简单的原子类型: 。atomic_flag 一种简单的原子布尔类型,只支持两种操作,test-and-set 和 clear。atomic 对 bool char i...原创 2020-02-12 14:23:27 · 8265 阅读 · 0 评论 -
C99相比C89新增内容
C99相比C89新增内容由于c99相对于c89有一些废除内容,所以c99并不兼容c89,以下为c99相对于c89的改动。1、增加restrict指针C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。rest...转载 2020-01-29 22:33:57 · 443 阅读 · 0 评论 -
用#if实现3个分支以上宏定义判断
用#if实现3个分支以上宏定义判断在实际开发过程中经常会用到宏定义的判断,尤其是在硬件平台和软件平台较多的情况下,宏定义可以很好地在不同平台下条件编译,通常 #ifdef 智能实现单一的判断 下面利用 #if defined 实现3个分支以上的条件编译#include <stdio.h>int main(void){ // 二值条件编译 #ifdef TEST1 pri...原创 2020-01-29 22:08:42 · 5061 阅读 · 0 评论 -
分析 snprintf sprintf printf 等 类“printf” 格式化输出函数,由于类型不兼容造成的内存混乱
分析 snprintf sprintf printf 等 类“printf” 格式化输出函数,由于类型不兼容造成的内存混乱1、引言在c/c++中有关字符串的格式输出的方法,一般都采用类“printf”系列函数,文件:fprintf 缓存区:sprintf snprintf 标准输出:printf ,在使用这些函数时要保证 变量和输出的格式要严格保持一致,否则将会出现莫名其妙的问题。c++11有...原创 2019-05-10 00:03:16 · 490 阅读 · 0 评论 -
c++ 中STL中find() find_if() remove() remove_if()的用法
c++ 中STL中find() find_if() remove() remove_if()的用法c++官网资料介绍c++官网以及参考资料,相当于Linux下的man手册。http://www.cplusplus.com/reference/,可以直接访问该网站进行资料的查阅,非常详细。STL中find() find_if() remove() remove_if() 用法实例#incl...原创 2019-01-27 15:57:55 · 2868 阅读 · 0 评论 -
c++中STL中map的基本用法
c++中STL中map的基本用法具体的详见代码或者 http://www.cplusplus.com/reference/map/map/// map的基本使用#include "pch.h"#include <iostream>//map需要包含的头文件#include <map>using namespace std;int main(){ ...原创 2019-02-01 00:24:23 · 206 阅读 · 0 评论 -
map根据value值查找key的方法
map根据value值查找key的方法在map中根据key寻找value比较方便,但是如果根据value去寻找key就比较麻烦一点,尤其是多个key对应同一个value时,本文介绍通过find_if find系列函数去寻找,在key-value是一一对应关系时,这个办法比较管用,现介绍如下:#include <iostream>#include <map>#incl...原创 2019-01-31 21:37:04 · 15736 阅读 · 1 评论 -
c/c++下取消结构体字节对齐方法
c/c++下取消结构体字节对齐方法在c/c++下编译器会默认地对结构体进行对齐,其对齐的方法跟平台具体的特性有关,本文主要介绍结构体不进行对齐的方法。1、结构体字节不进行对齐的用途(1)、减小内存占用的空间结构体默认进行对齐,占用的空间比结构体内部成员变量字节加起来大,如果取消字节对齐,可以减小一部分空间。见下面具体例子。(2)、直接将结构体作为通信协议(在低带宽下通讯)在不同的平台下...原创 2019-01-26 17:00:08 · 11987 阅读 · 0 评论 -
c++ string中find返回值讨论
一、引言最近在调试程序,发现一个由平台差异引起的段错误,该代码在32位平台上正常运行,但是到64位系统上就发现了问题。经查找是由于一个 unsigned int 在不同平台长度不同造成的,具体的代码如下:代码string &amp; Delete_Str(string&amp; old,const string&amp; tar){ // unsigned int nSize = tar...原创 2018-12-21 09:13:35 · 4059 阅读 · 0 评论 -
c++ 编码规范
本人将编码规范分为两部分,一个是普通的编码规范,另一部分为注释规范,分别采用不同的风格。接下来将分别进行详细介绍:编码规范之Google风格Google的编码规范非常优秀,全世界很多人都在采用,笔者也建议采用Google的编码规范,本文附上Google的编码规范网址:google编码规范除了注释规范为,都尽量采用Google的编码规范,并且Google提供编码规范检测脚本,可以规范我们的编...原创 2018-11-12 20:43:12 · 248 阅读 · 0 评论