![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C
文章平均质量分 93
C语言学习及应用
RobotWoods
编程小白,专注于机器人的开发
展开
-
超好用的代码格式化工具Astyle使用
一、使用流程1.安装软件linux:apt install astyle,重启vscodewindows:下载最新版本,并将exe路径添加至PATH,重启vscode2.安装vscode插件Astyle3.配置使用:设置->拓展->Astyle->在settings.json中编辑(后附具体配置)配置示意图"astyle.additional_languages": [ "c", "cpp", ], "a原创 2021-05-09 10:54:32 · 4580 阅读 · 4 评论 -
C/C++ 变量指针的强制类型转换
最近接触项目,遇到了一个char型数组的类型转换问题,需求为变为uint8_t。 在函数调用中,由于取char型数组的首地址,则设定了实参const char * bufData ,但是在函数定义中,使用到的为uint_8t * bufData的形参。 由于buff中的数值在传过来后并不是char型数组,所以在代入CRC校验后,计算出错。uint16_t factory_crc16 ( uint8_t *bufData, uint16_t buflen){ uint16_t ...原创 2020-10-11 18:48:21 · 2089 阅读 · 0 评论 -
使用Ubuntu读取USB手柄/方向盘的输出控制
摘要:最近从淘宝购买了某通多模版蓝牙5.0的游戏手柄,使用官方的接收器,好用的不得了。实测无遮挡情况下距离40m,有遮挡情况下10m左右,顺便总结下测试方法。1.cat命令cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名,如cat linuxyw.txtoptions:-b:–number-nonblank 对非空输出行编号,即在每行前显示所在行号-n:–number 对输出的所有行编号,即在每行前显示所在行号2.hexdump命令hex原创 2020-09-25 18:13:17 · 1433 阅读 · 0 评论 -
C语言 volatile关键字的使用
volatile是一个类型修饰符(type specifier),就像我们熟悉的const一样,它是被设计用来修饰被不同线程访问和修改的变量;volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。作用简单地说就是防止编译器对代码进行优化。比如如下程序:a=1;a=2;a=3;对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器原创 2020-09-23 13:49:57 · 237 阅读 · 0 评论 -
C语言宏技巧
宏打印函数在我们的嵌入式开发中,使用printf打印一些信息是一种常用的调试手段。但是,在打印的信息量比较多的时候,就比较难知道哪些信息在哪个函数里进行打印。特别是对于异常情况的打印,我们需要快速定位到异常情况的位置。这时候我们可以使用宏定义来封装一个宏打印函数,这个宏打印函数可以显示打印信息所在的文件、行数、函数名等信息。如:#define DBG_PRINTF(fmt, args...) \do\{\ printf("<<File:%s Line:%d Functi原创 2020-08-27 16:33:37 · 222 阅读 · 0 评论 -
C语言的函数指针
函数指针函数指针是专门用来存放函数地址的指针。函数地址是一个函数的入口地址,函数名代表了函数的入口地址。当一个函数指针指向了一个函数,就可以通过这个指针来调用该函数,可以将函数作为参数传递给函数指针。函数指针变量说明的一般形式如下:<数据类型>(*<函数指针名称>)(<参数说明列表>);其中,<数据类型>是函数指针所指向的函数的返回值类型;<函数指针名称>符合标识符命名规则;<参数说明列表>应该与函数指针所指向的函数的形参说明保持一致;(*&l原创 2020-07-13 00:22:40 · 290 阅读 · 1 评论