随笔分类 -  C/C++

摘要:int a[5] = {0,1,2,3,4};这种用法还是比较常见的。 int *ptr = (int*)(&a+1);,这种代码,目前来讲我是用的比较少,其实就是将a数组后面的一个地址赋值给了指针ptr,指针ptr还是指向int类型的。即a[4]后面的这一个内存。 阅读全文
posted @ 2019-12-17 21:18 wdliming 阅读(352) 评论(0) 推荐(0) 编辑
摘要:为何会出现大小端之分:这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于 阅读全文
posted @ 2019-12-17 15:36 wdliming 阅读(283) 评论(0) 推荐(0) 编辑
摘要:本文说的__VA_ARGS__,就是一个可变参数宏,与printf中可变参数的宏定义一个道理,是新C99规范中增加的。 __VA_ARGS__详情内容 1.关于__VA_ARGS__ __VA_ARGS__它是一个可变参数的宏,就是将左边宏中“...” 的内容原样抄写在右边 __VA_ARGS__ 阅读全文
posted @ 2019-12-16 13:35 wdliming 阅读(2221) 评论(0) 推荐(0) 编辑
摘要:在使用联合的使用,我们通常用来判断大小端,但是其实不仅仅有这个用处。 我在网上看到还有其他的用途: 1、分离高低字节 这个需要结合cpu大小端来判断,原文如下: 这样的操作,而一个除法消耗四个机器周期,取余也需要进行一系列复杂的运算,如果在短时间内需要进行很多次这样的运算无疑会给程序带来巨大的负担。 阅读全文
posted @ 2019-12-15 17:26 wdliming 阅读(926) 评论(0) 推荐(0) 编辑
摘要:再次学习一下后两个还定义的小技巧,在vscode中可以把鼠标放到代码中,可以看到宏定义展开的最终结果。这个编辑器,值得推荐,我主打用他来写代码的。 1、如果A是一个宏形参,那么#A就是转换为字符串"A"的形参名。这个过程称为字符串化(stringizing) 2、与#运算符类似,##运算符可用于类函 阅读全文
posted @ 2019-12-15 16:43 wdliming 阅读(4206) 评论(0) 推荐(0) 编辑
摘要:c语言可以使用位域来节省变量的空间,例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位。位域的取值范围非常有限,数据稍微大些就会发生溢出,这个字使用keil的使用,keil提示,溢出的警告, 因此不能忽视keil的任何警告,否则数据溢出了,你代码的功能是完不成的。 stru 阅读全文
posted @ 2019-12-15 15:44 wdliming 阅读(680) 评论(0) 推荐(0) 编辑
摘要:name | age | sex : :|: | : tony|20|男 lucy|18|女 内嵌数学公式$\sum_{i=1}^{10}f(i)\,\,\text{thanks}$ 阅读全文
posted @ 2019-11-19 14:01 wdliming 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2019-11-17 15:34 wdliming 阅读(145) 评论(0) 推荐(0) 编辑
摘要:可变参数函数实现的步骤如下: 1.在函数中创建一个va_list类型变量 2.使用va_start对其进行初始化 3.使用va_arg访问参数值 4.使用va_end完成清理工作 1.在函数中创建一个va_list类型变量 2.使用va_start对其进行初始化 3.使用va_arg访问参数值 4. 阅读全文
posted @ 2019-11-16 12:56 wdliming 阅读(318) 评论(0) 推荐(0) 编辑
摘要:转载自:https://www.yanbinghu.com/2019/01/20/6807.html?nsukey=kFLEF1Ek4bV4HLe0Dqum%2BJaiMZLqsvyHCf%2Fm%2F1cOp99fzJETfwdsG%2FSU7vq2jiX0Twk3oCAnmutbWO0p3X58 阅读全文
posted @ 2019-11-15 16:25 wdliming 阅读(415) 评论(0) 推荐(0) 编辑
摘要:在pc上面使用这个字符串函数,是没有问题的,但是我在keil中结合rtos来处理字符串的时候,比如char *s = "1.01313;17.2609;17.4875";那么就只能解析到1.01313,后面的数据是错误的,也不知道是啥原因,后来干脆使用了比较简单的方式: 1.01313直接使用ato 阅读全文
posted @ 2019-11-15 11:17 wdliming 阅读(488) 评论(0) 推荐(0) 编辑
摘要:最近在用到字符串处理的函数,c 中的库函数,有的函数还是很有用的,因此,要多多熟悉下,因为很多时候字符串通信是比较常见的,因此熟悉很有必要,上面代码的运行的解释一目了然了,可以查找特定字串在母串中的关系,很有用处的。 阅读全文
posted @ 2019-11-15 11:04 wdliming 阅读(525) 评论(0) 推荐(0) 编辑
摘要:“$@”代表目标文件。 “$^”代表所有的依赖文件。 “$<”代表第一个依赖文件。 .c.o:gcc -c $< 这个规则表示所有的 .o文件都是依赖与相应的.c文件的。例如mytool.o依赖于mytool.c,这样Makefile还可以变为 阅读全文
posted @ 2019-11-12 13:23 wdliming 阅读(184) 评论(0) 推荐(0) 编辑
摘要:在使用ti的adc芯片ads1259时,芯片是24为数据格式保存的,其中最高位是符号位,因此可以理解为是有符号数据,但是在嵌入式系统中,没有直接24位的变量,因此使用32的无符号先保存24位的数据。 如果最高位不是1,那么很简单,直接乘以lsb对应的电压,即可得到真实的电压值。 如果最高位1,说明是 阅读全文
posted @ 2019-10-25 18:08 wdliming 阅读(3845) 评论(0) 推荐(0) 编辑
摘要:sizeof('a')的值为4。因为此处‘a’是独立存在的一个字符(没有赋值给其它变量),实际上就是一个整型数,占4个字节,即此处‘a’对应的ascii码的十进制为整数97。(貌似解释得有些牵强,但事实就是这样)但是需要注意的是,若有如下定义: 则此处ch的字节数sizeof(ch)的值为1,而不是 阅读全文
posted @ 2019-10-14 16:51 wdliming 阅读(212) 评论(0) 推荐(0) 编辑
摘要:最近使用了goto语句,是因为if嵌套太深了,因此把错误处理同意了,直接使用goto语句。 举例: 多层嵌套里踹出去,或者有选择的退到第几层,这时候用goto是没毛病的,label写的明白点就行。注意不要钻来钻去,仅用于可控层数的break和continue,跳你就跳到某层循环结尾(大continu 阅读全文
posted @ 2019-10-14 12:37 wdliming 阅读(4723) 评论(0) 推荐(2) 编辑
摘要:Tiny C Compiler(缩写为TCC、tCc或TinyCC)是一个用于x86(16/32位)或x86-64(64位)系统的C编译器,开发者为Fabrice Bellard。软件是设计用于低级计算机环境,或是于磁盘容量有限的空间中(1.44磁片或是硬盘)。软件可以适用于Windows、Linu 阅读全文
posted @ 2019-10-13 11:28 wdliming 阅读(1888) 评论(0) 推荐(0) 编辑
摘要:在ANSI的标准确立后,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化创建过程中继续发展壮大。《标准修正案一》在1994年为C语言创建了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。它通常 阅读全文
posted @ 2019-10-10 17:39 wdliming 阅读(300) 评论(0) 推荐(0) 编辑
摘要:今天,在使用字符串的时候,对sizeof和strlen的用法更加深入了,特此记录下。 strlen是运行是计算的,不能放在函数外面计算的sizeof是预编译时运行的,可以放在函数外面计算。 对于char a[]="asdc"这样的定义,sizrof(a)的值是5,因为末尾会自动添加一个'\0',而s 阅读全文
posted @ 2019-10-08 21:37 wdliming 阅读(262) 评论(0) 推荐(0) 编辑
摘要:https://www.digital-detective.net/understanding-big-and-little-endian-byte-order/ https://people.cs.umass.edu/~verts/cs32/endian.html https://chortle. 阅读全文
posted @ 2019-10-07 23:10 wdliming 阅读(137) 评论(0) 推荐(0) 编辑