C
文章平均质量分 63
水似冰
学生,努力学习中
展开
-
嵌入式C中由printf引起的"不可调试"bug
1 bug发生在工作中,基于以前的代码框架开发一个新的功能,在IMX6开发板使用嵌入式C开发。 由于逻辑稍稍复杂,于是在编写代码时,if else 的每一个分支都加了printf打印相关变量。这样做原因有两个: - 方便查看变量 - 跟踪记录分支情况,便于判断程序是不是按照自己的逻辑在运行然后,功能调出来了,初步测试也OK。 但是当疲劳测试时,会偶尔出现这种bug: - 首先...原创 2018-06-19 16:54:09 · 1323 阅读 · 0 评论 -
不借助第3个变量交换两整形变量的值(C/C++)
问交换两个变量的值。通常我们的做法是:定义一个新的变量,借助它完成交换。代码如下:int a=1; int b=2; int t; t=a; a=b; b=t; 如何在不借助第3个变量交换两变量的值?这是个常见的面试笔试题,题目随小,但是却非常巧妙,遇到这个小问题是在同事写的代码中,这位优秀同事使用的位运算符 ^,让我眼前一亮,于是决定仔细思考并在此记录下来。答有三种...原创 2019-01-04 12:02:49 · 1238 阅读 · 0 评论 -
C语言中利用绝对路径与相对路径读取文件
#include <stdio.h>#include <dirent.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h> int main(int argc, char const *argv[])...原创 2018-11-29 10:48:06 · 8921 阅读 · 0 评论 -
什么是堆和栈?它们在哪?
原文What and where are the stack and heap?译文问编程语言书籍解释了在堆栈上创建了值类型,并且在堆上创建了引用类型,而没有解释这两者是什么。 我还没有看到对此的明确解释。 我理解堆栈是什么。 但,它们在哪里(物理上在真实计算机内存中)?它们在多大程度上受操作系统或语言运行时控制?它们的范围是什么?是什么决定了它们的大小?哪一个更快?答(7...翻译 2018-11-01 16:40:12 · 1413 阅读 · 0 评论 -
float 与 int 相乘产生的令人崩溃的“ 2.3 * 10 = 22 ”
越是简单的越不能忽视 类型强转一定要 注意! 注意! 注意!以上两天结论前前后后花了我三天工作时间才让我意识到并学到。有的时候,不管你小心还是无意,坑就在那里,踩的人够多,也许就填平了。 在工作中,分配到一个bug,简单描述一下:该程序很庞大,由QT编写,跨平台,支持ubuntu和windows,其中一个模块需要控制海康摄像头,代码中有海康的SDK。bug的现象是无法设定到指定的摄像头调焦...原创 2018-09-14 11:17:50 · 4087 阅读 · 0 评论 -
sqlite的C/C++ API接口的基础操作与事务
1、C/C++ 接口 API主要通过通过sqlite3_open,sqlite3_exec和qlite3_close来实现一个简单的数据库操作。1.1、sqlite3_opensqlite3_open(const char *filename, sqlite3 **ppDb)打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象fil...原创 2018-08-30 15:37:22 · 4679 阅读 · 1 评论 -
共用体Union
union是很少见的一种数据格式,接触c以来,真的很少用到,而在最近的工作项目中,需要调试一款陀螺仪, 而在其stm324xx系列的SDK源码中,发现在使用union,好奇之下,翻了翻《C++PrimerPlus》,大致了解到这种 数据格式,记录如下一、什么是公用体?它是一种特殊的数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型,也就是说:结构可以同时存储int、...原创 2018-09-04 11:10:19 · 428 阅读 · 0 评论 -
C语言中通过sprintf()函数构造sql语句
char* insertJob; char sql[255]; insertJob = &amp;quot;INSERT INTO job_table (task_id,point_tag,task_serial,device_tag) VALUES (&amp;quot;; sprintf(sql,&amp;quot;%s%d%s%d%s%d%s%d%s&amp;quot;, i原创 2018-08-28 20:29:19 · 1971 阅读 · 0 评论 -
C语言实现一种创建易管理易维护线程的方法
一、什么是线程?在一个程序中的多个执行路线就叫做线程。 就个人理解而言,一个线程就是一个进程里的一个while(1),一般情况下线程是不会退出的。 而多线程自然就是一个进程里的多个while(1)了。 《西游记》中,有一种有趣的设定——“天上一天,地上一年”。 而在现实世界中,随着技术发展,CPU的性能越来越高,夸张点说:“CPU一年,地上一天”。 为了高效利用CPU性能,多进程的方...原创 2018-08-28 20:20:04 · 289 阅读 · 0 评论 -
C++实现仅判断 ip是否可访问的 ping (win32/Linux)
C++实现仅判断 ip是否可访问 pingping 的实现ping 是基于 ICMP 协议实现的,而 ICMP 协议又是基于 IP 协议实现的(ICMP作为IP协议的数据部分传输)ping 通过 ICMP 协议中的 type=8 和 code=0 来实现的,这个 type 和 code 的组合在 ICMP 协议中表示请求回显。如果能正常回显,那么返回的 ICMP 协议包中的类型是类型0,表...原创 2019-01-10 17:43:58 · 2568 阅读 · 1 评论