
c++
文章平均质量分 70
暴风雨中的白杨
好好工作,不要摸鱼!
展开
-
Linux内核队列queue.h
文章目录一、简介二、SLIST单向无尾链表2.1 介绍2.2 操作2.3 例子三、STAILQ单向有尾链表四、LIST双向无尾链表五、TAILQ双向有尾链表六、CIRCLEQ循环链表七、queue源码参考一、简介queue.h是一个非常经典的文件,定义了一系列宏的操作,它定义了一系列的宏操作,实现了链表,尾队列和循环链表。queue.h定义了5个基本的数据类型:单向无尾链表单向有尾链表双向无尾链表双向有尾链表循环链表queue相关链表/队列的使用流程为:定义自己的结构体在结构体中原创 2024-02-27 22:42:19 · 1208 阅读 · 0 评论 -
浮点数的表示
浮点数是与定点数相对的概念,计算机中的定点数约定小数点的位置不变。由于计算机字长的限制,当需要表示的数据有很大的数值范围时,不能直接用定点小数或者定点整数表示。浮点数由尾数MMM和阶码EEE构成。基数为2的数FFFF2E×MF2E×M尾数MMM必须为小数,用n1n+1n1位有符号定点小数的形式表示,可以采用原码、补码阶码EEE必须为整数,用k1k+1k1位有符号定点整数表示,可以采用原码、补码、移码浮点数的编码位数mn1k1mn。原创 2024-01-14 23:35:08 · 3776 阅读 · 1 评论 -
C++ 初始化列表
尽量使用初始化列表初始化,初始化列表的执行是在构造函数的用户代码之前。初始化列表只能初始化一次,初始化列表中的元素不能重复。对于自定义类型成员变量,会先使用初始化列表初始化。编译器允许构造函数赋初值和初始化列表初始化混用。C++提供了初始化列表语法,用来初始化属性。初始化列表的执行是先于构造函数的。只能在初始化列表初始化。原创 2024-01-07 01:25:25 · 673 阅读 · 0 评论 -
C语言结构体内存对齐
一段流式的内容,包含的是info_s类型的信息( 代码中的info_stream ), 直接通过强制类型转换的方式就无法正常解析。如下的info_s结构体类型,包含一个int型成员age, 一个char型成员gender, 一个int型成员id。可以看到id成员是从相对于头部位置,地址为8的位置开始的。单从数据成员的大小进行分析,整个结构体的大小应为9字节。可以查看成员的起始位置相较于结构体起始位置的偏移量。设置按照1字节对齐后,得到了结构体的大小为9个字节。id字段的解析是不正常的。原创 2023-12-26 21:53:51 · 697 阅读 · 0 评论 -
VS项目属性变量
【代码】VS项目属性变量。原创 2023-11-14 22:58:38 · 221 阅读 · 0 评论 -
C语言assert断言
断言用来处理不应该发生的非法情况,而对于可能发生且必须处理的情况应该使用错误处理代码,而不是断言。默认情况下,assert宏只在Debug版本中才能够起作用,在Release版本中将被忽略。C语言中,断言被定义成宏的形式,原型在。的值来决定是否需要终止执行程序。断言是对某种假设条件进行检查。打印一条出错信息,然后通过调用。的值为假,将首先向标准错误流。函数终止程序运行,否则。原创 2023-11-10 22:41:53 · 449 阅读 · 0 评论 -
C语言获取文件长度
在Linux操作系统下,可以使用stat函数来获取文件信息,其中st_size字段表示文件的长度。原创 2023-10-23 20:53:57 · 789 阅读 · 0 评论 -
C语言纳秒级计时
C语言中常用的clock()函数只能精确到毫秒级,对应的数据类型是clock_t。C11标准中提供了纳秒级别定时器:timespec_get()函数与timespec()类型。原创 2023-10-09 21:36:56 · 1460 阅读 · 0 评论 -
C++ const修饰符
C++ const修饰符原创 2023-09-05 16:44:37 · 442 阅读 · 0 评论 -
C++ lambda表达式
c++ lambda表达式原创 2023-09-04 11:40:39 · 196 阅读 · 0 评论 -
C++ using关键字
定义类型别名// 将myint类型定义为int类型的别名可以指定模板类型别名// 可以使用myVector来代替std::vector类型可以定义函数指针类型的别名定义模板指针的别名// 可以使用myPointer 来替代int*类型。原创 2023-08-22 19:31:33 · 369 阅读 · 0 评论 -
ini配置文件
ini文件是initialization file的缩写,即初始化文件,是widows系统配置文件所采用的存储格式。section用来表示一个段落,ini文件可能是项目中共用的,使用section段名来区分不同用途的参数区。一个section没有明显的结束标识符,一个section的开始就是上一个section的结束。ini配置文件的后缀名也不一定必须是.ini, 也可以是.cfg, .conf或者是.txt。所有的键值对都是以节section为单位结合在一起的。键值对的键名,如果为NULL,删除整个节。原创 2023-03-21 17:44:50 · 14508 阅读 · 1 评论 -
小数用二进制表示
【代码】小数用二进制表示。原创 2023-03-17 21:16:46 · 620 阅读 · 0 评论 -
Windows线程
系统是以线程为单位调度程序,一个程序中可以有多个线程,实现多任务的处理。原子锁的实现,直接对数据所在的内存操作,并且任何一个瞬间只能有一个线程访问。当任何线程都不拥有互斥,互斥有信号,任何一个线程拥有互斥,互斥就没有信号。操作系统将CPU的执行时间划分为时间片,依次根据时间片执行不同的线程。当多个线程对同一个数据进行原子操作,会产生结果丢失,比如算术运算。线程轮询: 线程A -> 线程B ->线程A …Windows线程是可以执行的代码的实例。触发事件( 将事件设置为有信号状态)事件的有信号无信号可控制。原创 2022-11-15 16:53:39 · 891 阅读 · 0 评论 -
Windows库程序
由于静态库是将代码嵌入到使用程序中,多个程序使用时,会有多份代码,代码体积会增大。动态库的代码只需要存在一份,其他程序通过函数地址使用,所以代码体积小。静态库发生变化后,新的代码需要重新链接嵌入到执行程序中。动态库发生变化后,如果库中函数的定义(或者地址)未变化,其他使用DLL的程序不需要重新链接。动态库编译链接后,也会有LIB文件,是作为动态库函数映射使用,与静态库不完全相同。导出的不是类,类是没有地址的,实际上导出的是类的成员函数地址。隐式链接的情况,dll文件可以存放的路径。模块定义文件 .def。原创 2022-11-14 12:51:33 · 611 阅读 · 0 评论 -
Windows窗口程序
控制台程序ConsoleDOS程序,没有窗口,通过DOS窗口执行入口函数: main窗口程序拥有自己的窗口,可以与用户交互入口函数: WinMain库程序存放代码、数据的程序,执行文件可以从中取出代码执行或获取数据静态库程序:扩展名LIB, 在编译链接程序时,将代码放入到执行文件中静态库没有入口函数 --> 没法执行 --> 没法进入内存动态库程序:扩展名DLL,在文件执行时从中获取代码动态库有入口函数–>可以执行,但是不能独立执行( 必须依附其他程序 )入口函数: DLLMain编译器CL.EXE 将源原创 2022-11-13 23:26:58 · 1147 阅读 · 0 评论 -
C++ STL
STL主要有container , algorithm和iterator三大部分构成容器用于存放数据对象算法用于操作容器中的数据对象迭代器是算法和容器之间的中介// 初始大小为10 vector < int > v3(10 , 1);// 初始大小为10,每个元素的初始值为1 vector < int > v4(a , a + 5);// 用数组a[0..4] 共5个元素初始化v4string();// 建立一个空的字符串 string(const string & str);原创 2022-10-26 09:25:39 · 695 阅读 · 0 评论 -
UDP程序设计
无连接socket接收数据时常用recvfrom,把输入队列中的第一个数据报复制到buf中,如果数据报的长度比缓冲区大,将只把数据报前面len字节的数据复制到buf中,多余的数据会丢失,recvfrom产生错误码WSAEMSGSIZE。这种情况调用closesocket会立即返回,如果队列中还有尚未发送的数据,底层协议不会立即关闭socket,而是先发送数据,数据发送完成后转换到关闭状态,双方都同意关闭后,两端才真正关闭socket,这被称作“优美关闭”。原创 2022-09-26 09:27:14 · 1022 阅读 · 2 评论