- 博客(47)
- 收藏
- 关注
原创 c++ const_cast转换后的const值的问题
这种基本类似的const申明时,编译器会将a1作类似于宏一样的处理,而结构体却不会这样处理。反汇编后,发现&a地址处的值的确是被修改成了9,但编译器在调用。备注:a1的值仍为2;a.b和b.b都被修改成了9。函数时给到的参数值不是从&a地址取值的,是直接给了。
2024-10-30 14:31:00
292
原创 c++多线程安全Queue
不支持拷贝构造函数和赋值运算符重载函数,而默认拷贝构造函数默认行为会调用成员变量的拷贝构造函数进行构造,因此这里的ThreadQueue类也时不支持拷贝构造函数的。默认情况下,ThreadQueue也不应该支持拷贝构造函数,示例代码里可以考虑显示的删除拷贝构造函数。当然,如果有特殊需要也可以自己实现拷贝构造函数的。这里的代码实现统一放在了一个hpp文件中实现。如果想分层h和cpp文件实现,需要考虑模板的显示实例化。这玩意挺搞人的,在写模板类的时候,尽量把实现和定义写在一个文件中吧。
2024-09-14 10:20:43
290
原创 关于int main(int argc, char* argv[])中为什么必须要有argc
在C语言中,编译时确定的函数主要指的是那些不依赖于程序运行时输入或外部状态的函数,以及那些由编译器直接提供或内联展开的内置函数和宏。就知道数组长度了,为啥多出来各argc。最近用该代码求传入函数的数组长度,编译器报warning char** argv了,并且求出来的值始终为1。顺势追了下原因,发现。外部传参的数组,编译器无法正常推到数组的大小,也就出现了前面的尴尬的情况了。学C/C++的时,最熟悉的接口参数大概就是。(以下内容来自chartgtp)
2024-07-29 17:54:01
426
原创 c++ nlohman/json库
title: c++ nlohman/json库top: 42是一个方便易用的C++ json解析库。它是一个开源项目,在使用时,你只需要引入头文件more。
2024-06-06 17:20:12
438
原创 关于C++输入输出流的同步检查
实际上,这一步在大多数情况下是多余的,因为在上一步中我们已经解除了 std::cin 和 std::cout 之间的关联。这在处理大量输入输出的程序中非常有用,特别是当性能是关键因素时。这是一个全局设置,用于控制 C++ 的标准流(如 std::cin, std::cout)与 C 风格的输入输出函数(如 scanf, printf)之间的同步。时(如代码中的 0,等同于 false),C++ 的流和 C 风格的函数之间的同步被禁用,这通常可以提高性能,特别是当你主要使用 C++ 的流进行输入输出时。
2024-06-06 09:51:18
471
原创 C++ Lambda表达式
lambda表达式定义了一个匿名函数,并且可以捕获一定范围内的变量。其中capture是捕获列表,params是参数列表,opt是函数选项,ret是返回值类型,body是函数体。返回值类型:在C++11中,lambda表达式的返回值是通过返回值后置语法来定义的。参数列表(): 和普通函数的参数列表一样,如果没有参数参数列表可以省略不写。函数体:函数的实现,这部分不能省略,但函数体可以为空。捕获列表[]: 捕获一定范围内的变量。opt 选项, 不需要可以省略。
2024-06-03 09:30:53
403
原创 基于ANTLR4 C++(cmake)解析设备树文件
引导程序要初始化并且引导一个计算机系统实现多种软件模块的交互。例如Bootloaders和hypervisors(固件)程序, 他们在把控制权交给操作系统软件之前可能需要在系统硬件上做低级的初始化工作。同时,bootloaders,hypervisos能够依次加载系统并把控制权交给操作系统, 使得在软件之间的交互变的标准化、接口化并且易用。在这个文档中引导程序被用作泛指那些初始化系统状态并加载执行操作系统的程序。boot引导程序主要包括:固件、bootloaders和hypervisors。
2024-05-27 17:37:44
500
原创 基于ANTLR4+python解析设备树文件
引导程序要初始化并且引导一个计算机系统实现多种软件模块的交互。例如Bootloaders和hypervisors(固件)程序, 他们在把控制权交给操作系统软件之前可能需要在系统硬件上做低级的初始化工作。同时,bootloaders,hypervisos能够依次加载系统并把控制权交给操作系统, 使得在软件之间的交互变的标准化、接口化并且易用。在这个文档中引导程序被用作泛指那些初始化系统状态并加载执行操作系统的程序。boot引导程序主要包括:固件、bootloaders和hypervisors。
2024-05-22 16:03:44
698
原创 antlr4安装、环境配置和使用(python3)
这是一个利用ANTLR解析JSON转XML的案例// JSON.g4json: obj| array;obj;array;value;| '-'?| '-'?;INT;import sysbuf = "\n"buf = "\n"# listenercase.json为本例待解析处理的输入文件,文件语言为JSONJSON.g4为本例对应的ANTLR4语言描述文件为本例对应的python语言描述文件。
2024-05-21 17:57:15
3128
原创 vscode环境下的flex&bison
定义部分包括选项、文字块、定义、开始条件和转换。其中,以空白字符开始的行将被原样拷贝到C文件中。定义部分可以包含文字块,他们是被原样拷贝到生成的C文件的开始部分的C代码,文字块存在于%{和%}或者%code中,通常包括声明#include行。声明包括%union、%start、%token、%type、%left、%right和%nonassoc。
2024-02-29 17:00:14
1604
原创 linux常用命令
表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo ‘2’| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”
2024-02-28 16:12:08
461
原创 makefile基础
自定义函数,不是真正的函数,本质上是多行命令没有返回值A:=123B:=$(A)echo func1endefA:=456all:A:=789### output# func1# 789 123# 789 123#### 传参 $(0)是函数名,$(1)是第一个变量A:=123echo $(0)endefA:=456all:A:=789### output# FUNC2# abc def###
2024-02-28 16:10:32
350
原创 hexo next 主题配置
else if(!return 1;});然后,在对应的md头部添加top: num,num为任意数字,数字大的置顶。
2024-02-28 16:02:02
1317
原创 c++基础
title: C++top: 43date: 2021-09-05tags:注释// 单行注释多行注释常量:定义宏常量:静态变量关键字(保留字)asmdoifreturntypedefautodoubleinlineshorttypeidbooldynamic_castintsignedtypenamebreakelselongsizeofunioncaseenummutablestaticunsign
2024-02-28 15:51:22
606
原创 八皇后问题
从学C语言开始,就对递归算法有着困惑性。这些天弄论文,没摸算法和代码,又开始新一轮的蜜汁困惑。递归算法,或许想成用树遍历会更好理解一些。先前接触的关于递归的知识也没做记录,代码还堆在那里,也懒得去整理了,等以后闲了想起来再说吧-_-
2024-02-26 14:06:24
787
原创 logging模块
日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情。一个事件可以用一个可包含可选变量数据的消息来描述。此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别(level)。
2024-02-25 15:46:32
714
原创 sys._getframe获取函数名与调用者名
title: python–sys._getframe获取函数名与调用者名top: 43more。
2024-02-25 15:44:13
799
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人