为什么需要对struct进行转换? 一般而言,不同服务的协议,在生成桩代码后会放在不同仓库中。由于协议引用,相同的数据结构也会重新生成一份。而实践中,一些打包服务需要将上游的数据结构进行透传。由于数据结...
后台研发
利用VS Code+Qemu+GDB调试Linux内核
背景 一直以来,都对linux系统的理解都是在应用层面,看过了《UNIX环境高级编程》,对于系统中的一些模块的实现方法还缺乏深刻的认识,故想研究下Linux内核机制。 单纯阅读源码还是不如一步一步调试内核理解深刻...
浅谈库函数与系统调用,以fork函数为例
背景 最近,在看unix环境高级编程,第一章就讲了unix下的函数调用结构: 这图其实把结构表达的很清楚,但感觉还是有两个疑问: 库函数是具体是如何调用system call 不通过库函数,我们程序中如何调用system c...
深入理解C++中的左值引用,右值引用
先谈引用 由于C中的指针过于灵活,容易出错,所以C++引入了引用来减少出错的用法,记得C++ primer中说,引用就是一个变量的别名,在初始化引用后,引用就无法改变再引用到其他的对象了。在遇到类的移动构造函数...
谈谈C++中变量初始化的问题
背景 C++中的变量分为外部变量(全局变量,静态变量)和局部变量,而变量本身又分为基本类型变量和类变量,在初始化的时候,各种变量存在不同的处理方式,在此总结记录下 初始化与赋值 初始化和赋值对于基本变...
谈谈C++之多文件编译
前言 C++采用了多文件编译,在逻辑上,整个程序包含所有文件,但编译是针对单个文件生成目标文件,多文件是在链接时才进行整合,所以在编译过程中,我们需要指明当前文件所需要的其他文件的信息。C++编译是区分....