C++
文章平均质量分 66
C++方面内容
小刚学長
满屏源代码,一把辐射泪,都云编程痴,谁解其中味!
展开
-
中文输入法开发-关键代码
中文输入法开发核心关键代码介绍当然主要是交互这块,至于字典里如何查询也是一门行道原创 2023-07-26 09:32:47 · 348 阅读 · 0 评论 -
修改亮度、对比度、色调、饱和度,达到预期效果
用户态可以通过v4l2自带工具进行一些UVC相机参数的设定,包括采集卡驱动之类,也可以通过v4l2自带工具进行参数设定。通过修改这些参数的值,可以弥补相机本身彩色部分自带不足。原创 2023-05-05 20:26:35 · 1799 阅读 · 0 评论 -
一些好用的命名单词
/这个这个,虽然没有太多歧义,也不太可能冲突,但但这名字脑壳疼。的确,编码N年,到头来发现起始给变量(类)起个名字的确很难,仿佛比写个算法都难,往往酝酿了很久,结果还是差一点意思。总是觉得哪里不爽,要么太简单,要么太长,要么太普通。当然不应该千变一律,可以组合,但要琢磨琢磨,就好比写个诗一样,每个字都是有特定,换个近义词,总是不够意思。//num 虽然是number缩写,但太普通了,也缺少点意思,有点歧义。int n = 0;一般来说最佳名词,由一、两个单词组成,超过3个就显得臃肿了。原创 2023-03-25 14:48:14 · 549 阅读 · 0 评论 -
Linux 进程启动方法
1. 调用系统命令,完成一些操作,或判定结果 或获取结果2. 作为启动进程,调用第三方进程,并监控进程是否退出3. 加载升级进程,升级进程kill调用者或调用者自行退出,完成升级原创 2023-02-20 08:59:53 · 1294 阅读 · 0 评论 -
针对启动程序闪退问题,写了个脚本
传统方法,就是人工运行,高级AI判断是否程序正常启动,若不是,则停止人工运行。程序发现在启动时,偶现闪退现象,需要定位问题所在以及跟踪原因。那么能否用shell脚本来实现呢?这样更加灵活点,也省去了很多编译 工作。这样可行是可行的,就是很麻烦,如果本身概率就很小,也很难持续这样操作。如果存在,kill掉,再次运行。如何写判定、如何写while。写个程序,运行待测试程序。如果不存在,则退出程序。原创 2023-02-16 21:15:14 · 206 阅读 · 0 评论 -
程序参数解析
也可以没有参数,但要注意有参数时,参数与选项之间不能有空格(有空格会报错的哦),这一点和一个冒号时是有区别的。argc 是表示有多少参数,包含当前进程。也就是说,不带任何参数,argc==1。C++程序都是通过main函数启动的,大部分的程序都是支持输入参数。前面两个参数都很好理解,就是main输入参数,一模一样。两个冒号的就表示这个选项的参数是可选的,即可以有参数。--参数,这个参数不再是一个字符,是个字符串。那么,我们程序,怎么处理这些呢?一个冒号的意思,就是必须输入项。-参数 但不需要输入项。原创 2023-02-07 18:09:18 · 437 阅读 · 0 评论 -
ZYNQ FSBL源码分析
zynq在运行完芯片内固化的bootRom之后运行的是FSBL程序(first stage boot loader),uboot由FSBL调起,官方说法中将uboot叫做SSBL(second stage boot loader).FSBL 是ZYNQ的bootloader虽然不是第一个启动的,但属于用户可以更改的启动程序,因此对源码分析是非常有必要的(在FSBL之前有bootRom,这个已经固化)代码为自动生成的main.c源码。原创 2022-10-10 10:16:59 · 1122 阅读 · 0 评论 -
关于动态规划算法
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。每次走完都要走 m+n-2 步骤,根据一层层深度,实际上这个是离散数据的问题。此时n=18,m=9,相当于18*17........10 这个数字非常大。3 3 那么n=4,m=2,即 4*3/(2*1) = 6。3 7,那么n=8,m=2,即 8*7/(2*1) = 28。相当于 C(m+n-2, min(m-1,n-1))3 2 那么n=3,m=1,即3/1 = 3。1. 向右 -> 向下 -> 向下。原创 2022-09-16 23:28:40 · 223 阅读 · 0 评论 -
Set与二分法效率
stl中有set用于匹配是否存在,内部利用rbtree机制,是一种高效算法但在c语言环境下,stl是不能直接使用,因此需要用其他算法来代替,二分法也是一种快速排序方法,代码逻辑也比较简单。由于项目中,会碰到协议的筛选,例如跟进协议ID筛选,然后需要继续处理;此时由于前端输入是广播数据,往往大部分数据都是"不需要处理"的,如果不进行优化,此处效率的确低下.本来没有这篇作业的,由于测试结果并不是set效率都高于二分法的测试条件限制: 先看数据截图:二分法数据测试被测数组长度为 102被测数组长度为原创 2022-07-05 20:08:02 · 311 阅读 · 0 评论 -
error: unable to find string literal operator ‘operator““PRIu64 解决办法以及原因
移植一份代码,出现一串error: unable to find string literal operator ‘operator""PRIu64’ with ‘const char [31]’, ‘long unsigned int’ arguments printf("Free sectors %10"PRIu64"\n", free_sectors);实际对应的源码位置PRIu64 应该未知正常情况下,一般我们要打印一个64整数int64_...原创 2021-05-18 17:35:11 · 2101 阅读 · 1 评论 -
看似没啥作用的花括号,其实也有用处的。
今天在研究别人的代码,发现有处代码感觉有点冗余,好像有点多余,正想删除,但仔细一看,这样写也是有目的。比如说如下代码//.....mInit = false;CallFun();{ CTest a; mClose = 1; mOpenFile = 100;}CallFun33();//....从逻辑角度来看,{ } 里的代码是100%会被执行到就算没有 { },也是一样会执行到这样的代码,往往第一感觉...原创 2021-04-28 19:45:34 · 156 阅读 · 0 评论 -
C++代码规范(必须要遵循以及举例)
版权、文件声明规范1、版权和版本的声明【规范1-1-1】C/C++在头文件(.h)需进行版权、版本、作者等声明。版权和版本的声明位于头文件和源文件的开头(参见示例),主要内容有:版权信息 文件名称,摘要 当前版本号,作者,日期/******************************************************************************** Copyright (C), 2010-2019, GOSUN CL** @fil...原创 2021-04-14 11:19:52 · 3110 阅读 · 0 评论 -
一起不太引起注意的越界操作
谁都知道越界会带来很多问题。但究竟什么问题?会有什么后果,估计很少人能够说得清楚吧C++缺少一些保护机制,因此,越界了之后,事实上是无法预估的,有很大可能会“没事”,有时候会莫名其妙错误一般来说,对于一个成熟的C++开发者,或多或少会碰到越界的问题最近在处理一个程序,经过跟踪发现一处隐藏的bug,一开始百思不得其解,后来算是搞清楚了。为了保密的原因,隐去项目的信息,以下的代码均是测试代码,并非真实项目中的代码,但表达原理是一致的。(so,测试代码就是测试代码,请不要直接copy使用.原创 2021-04-07 08:37:00 · 137 阅读 · 0 评论 -
Class ‘xxxx‘ has a constructor with 1 argument that is not explicit. cppcheck常见错误以及为什么
静态检查是比较好的一种自动检查代码工具,可以发现一些隐藏问题,当然更多是让你的代码更加规范,更加在可控范围内。以下是我整理的错误,也是自己对C++进一步的思考构造函数显式调用问题提示:Class 'CLBTimeSpan' has a constructor with 1 argument that is not explicit. Such constructors should in general be explicit for type safety reasons. Using t原创 2021-04-06 16:04:54 · 2391 阅读 · 0 评论 -
程序的地址空间 stack and heap
堆跟栈是个C++老话题了,但做应用程序的时候,也不怎么碰到问题,有时候用堆,有时候又觉得栈更方便点总之,不要太离谱,都没啥问题,久而久之就不清楚怎么回事,稀里糊涂就过去了。但,当你发展到一定程度的时候,比如要追求性能的时候,RAM受限的时候,此时就会关注这些细节,这往往也是架构师最基本素质之一什么是堆?堆(heap)一般用于:是程序运行期间动态分配的 malloc/realloc new的空间,相对栈来说这个空间比较大,但也不是无限大(或跟内存大小一致)堆的生存期...原创 2021-04-01 14:53:18 · 486 阅读 · 0 评论 -
Doxygen详细配置使用说明
写在前面:Doxygen是自动生成帮助文档的软件,非常方便。但,前提你的代码注释必须规范(这里的规范不是说符合你们公司内部规范,是符合标准规范)另外,源码必须全部UTF8或GBK,不能混用(否则中文会出现乱码,当然注释全英文随意)千万要注意以上两点,否则可能会出现乱码/ 失败之类的什么是Doxygen?Doxygen 是一个程序的文件产生工具,可将程序中的特定注释转换成为说明文件。说白了就是通过代码里注释直接生成说明文档,这样可以大大提高我们程序员生成说明文档的效率,当然..原创 2021-03-30 09:16:28 · 3577 阅读 · 0 评论 -
实现自己的不定参数的函数
不定参数在一些特殊场合下是很有用的,例如在字符串的格式化合成,像printf()函数、日志输出等场合都很容易想到这样的结构。其实,这种方法在C语言里就已经存在了,也不是什么新奇特的东西,一般要实现这样的功能,需要以下几个函数/类型组成:va_list 、va_start、va_avg、va_end头文件:stdarg.h先来看两个例子:例1:12345678...原创 2017-07-29 14:24:00 · 69 阅读 · 0 评论 -
跳转函数 setjmp 和 longjmp
setjmp 和 longjmp 是一对跳转函数,也是神一样的函数,这种函数比goto都强大,但功能跟goto差不多既然,代码规范里要求不能使用goto,所以setjmp 和 longjmp 这个也基本不用。当然,前提特殊情况下是可以的。例如特殊处理,实现自己的异常处理代码关于 setjmp 和 longjmp 的解释,不再重复,网上很多。这里记录下步骤,明明白白怎么回事:有了上面的...原创 2019-12-04 13:38:00 · 107 阅读 · 0 评论 -
关于GDB调试一些笔记
当程序卡住的时候,如何通过GDB判断卡在哪里?程序运行没有“反应”,或出现卡死现象,此时除了猜测代码逻辑以外,可以通过GDB进行调试首先获取进程的PID,可以通过Top命令获取也可以通过ps -aux | grep xxx xxx为你程序前几个字符,区分大小写,可以一个字母也可以多个,但要连续。获取PID,之后输入 gdb -p xxxx xxxx 为前面获得的pid号...原创 2020-12-29 10:34:00 · 135 阅读 · 0 评论 -
如何让可执行文件更小?---摘抄过来
原文地址:https://cjting.me/2020/12/10/tiny-x64-helloworld/#executable正如文中所说,一个简单Hello World竟然编译之后15K,在一些环境下根本接受不了。本文就是最好从简单原理描述,一个可执行文件是怎么来,哪些地方是可以优化的,哪些地方是必须的,有兴趣的可以仔细看看说明:本人对此方面最近比较感兴趣,对于我们实际项目(嵌入...原创 2021-01-07 10:43:00 · 384 阅读 · 0 评论 -
结构体对齐引发的教训
结构体是对齐的,而且windows跟linux也不一样,平常不注意的话,会导致莫名其妙的问题最近在找一个离奇的问题,最终虽然找到是强制转换导致问题,但实际上还是结构体对齐问题跟协议设计问题背景:某端口收到一帧数据,原始数据放在uint8_t *pBuf 里面一般来说,为了解析方便点,要根据协议设计一个结构体,假设这个结构体名称为ST_UNIR_BD然后,用memcpy,将*pBuf...原创 2021-02-09 11:05:00 · 684 阅读 · 0 评论 -
C++Test查看规则文档
C++Test是Parasoft出品,优质产品,一般用于代码的静态检查,单元白盒测试等先mark一下:打开C++ Test之后,选择菜单“Parasoft” - 测试配置 - 选择“内建”然后再选择你要查询标准,点右键,选择“查看规则文档”,此时就可以看到该条的规则具体内容,也有例子说明,比较详细扩展阅读:MISRA: MISRA C是由汽车产业软件可靠性协会(MISRA)提出的C...原创 2021-02-22 16:27:00 · 145 阅读 · 0 评论 -
内存拷贝效率优化
像memcpy是经常用到,但memcpy实际上并不是像我们知道那样一个字节一个字节的拷贝memcpy是库函数,并不是C语言,有些场合下要自己写代码实现1. 最简单实现方式一个个字节的实现void Mem_Cpy(void *pTag,const void *pSrc,int nLen){ unsigned char *pTagBuf = (unsigned char *...原创 2021-02-25 13:17:00 · 2706 阅读 · 0 评论 -
视频流传输相关知识
上次整理视频一些知识,这些知识以采集,编码/解码相关的,也引出了H264概念文章:https://www.cnblogs.com/winafa/p/12768392.htmlH264的设计,主要还是网络传输但网络传输,在我们印象中,基础也就是UDP/TCP之类的,那么视频(数据量又那么大),有没有合适的应用层协议呢?答案肯定有的,像rtsp rtp都是为了视频传输而来,因为视频数据对实...原创 2021-03-01 14:43:00 · 775 阅读 · 0 评论 -
无符号有符号一起运行,会带来哪些风险?
最近在给项目组做静态检测工作,也做了一部分修复问题由于项目代码也基本完成,功能也验证差不多了,做一做静态检测还是很有必要的。而我通过这样的活动,也对一些细节了解更加彻底一般来说,当我们程序出现,无符号变量与有符号变量一起运算的时候,静态检测工具会报一条警告,例如:这条规则来自 MISRA2004-10_1_a-3规则上是这样描述的“整型表达式的值不能被隐性地转换成一个不同的底层...原创 2021-03-05 13:10:00 · 283 阅读 · 0 评论 -
继续有符号与无符号混合运算
前面记录一篇,关于有符号与无符号的混合运算,会有一些意想不到的结果那么,我们是否可以“负负得正”呢?什么情况下是不行的?首先,不要被绕晕。这是前提: 所有的无符号与有符号运算,都是先转成无符号运算的。结果返回 无符号,那么,理论结果如果本身就是正数的,那实际就应该是正常的如果结果不是正数的,那么是负数的无符号形式(最高位=1,其他位取反)为了验证效果,(就验证加/减/乘/除),写段...原创 2021-03-08 15:30:00 · 179 阅读 · 0 评论