C语言
文章平均质量分 62
夜风~
手与大脑的距离决定了理想与现实的相似度!
展开
-
BCD转二进制、二进制转BCD
BCD:Binary-Coded Decimal,二-十进制代码,也叫二进码十进数。比如BCD码0x12是十进制数12,而0X12的十六进制是18。 BCD转二进制数:uint8_t BCDToByte(uint8_t Value){ uint32_t tmp = 0U; tmp = (Value & 0xF0) >> 4) * 10; //取高位后乘以10 return原创 2018-01-25 16:40:25 · 11066 阅读 · 0 评论 -
C 函数库 ——libc,glibc,eglibc,uClibc,newlib
glibcglibc和libc都是Linux下的C函数库,libc是Linux下的ANSI C的函数库;glibc是Linux下的GUN C的函数库;GNU C是一种ANSI C的扩展实现。ANSI C是基本的C语言函数库,包含了C语言最基本的库函数。这个库可以根据 头文件划分为 15 个部分,其中包括:<asset.h>,<ctype.h>,<errno.h&g...转载 2019-02-26 13:22:23 · 6325 阅读 · 0 评论 -
#pragma用法详解
#pragma预处理命令#pragma可以说是C++中最复杂的预处理指令了,下面是最常用的几个#pragma指令:#pragma comment(lib,“XXX.lib”)表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样。#pragma comment(linker,"/ENTRY:main_function")表示指定链接器选项/ENTRY:main_func...转载 2019-02-12 21:46:11 · 19089 阅读 · 0 评论 -
内联函数 —— C 中关键字 inline 用法解析
转自:https://blog.csdn.net/zqixiao_09/article/details/50877383 一、什么是内联函数&nbsp; &nbsp; &nbsp; &nbsp;在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。...转载 2018-07-09 17:53:59 · 667 阅读 · 2 评论 -
c语言宏定义中#、##、...、_ _VA_ARGS_ _ 与linux驱动中module_platform_driver()宏的作用
c语言宏定义中##和#字符#define osThreadDef(name, thread, priority, instances, stacksz) \const osThreadDef_t os_thread_def_##name = \{ #name, (thread), (priority), (instances), (stacksz)}上诉宏定义中出现了##和# 符号...原创 2018-06-14 09:15:46 · 582 阅读 · 0 评论 -
你真的了解typedef 吗?
typedef ,#define原创 2018-03-30 15:35:32 · 3084 阅读 · 0 评论 -
数组的地址问题
数组的地址问题例: int a[10]={1,2,3,4,5,6,7,8,9,10};a、a[0]、&a、&a[0]是什么? a+1、&a+1是什么? sizeof(a)、sizeof(a[0])、sizeof(&a)、sizeof(&a[0])的值各是什么? 当我们定义一个数组int a[10]时,编译器会分配一块内存,这块内存的名字命...原创 2018-02-23 11:35:41 · 22729 阅读 · 9 评论 -
什么是代码区、常量区、静态区(全局区)、堆区、栈区?
什么是代码区、常量区、静态区(全局区)、堆区、栈区?一直对这些区搞不清楚,每次听到这些区头都大了,感觉很混乱。下面就结合STM32内核来具体讨论分析这些区到底是什么回事,每种关键字定义的变量又到底是存在什么区。 如下图,是自己总结的内存分区的示意图。一般内存主要分为:代码区、常量区、静态区(全局区)、堆区、栈区这几个区域。 代码区:存放程序的代码,即CPU执行的机器指令,并且是只读的。...原创 2018-02-09 16:57:09 · 77407 阅读 · 39 评论 -
二级指针
如上图: p是一级指针,指向字符串首地址s; ptr是二级指针,指向一级指针p; **ptr <=> *p <=> s[0], <=>是等价于; 刚开始,**ptr和 *p的内容是字符A; p++后, **ptr和 *p的内容是字符B, 即p移动指向B,ptr指向p,也是B; ptr++ 后,p本身并未移动,指向内容仍是字符B; 而**ptr里的内容什么也没打印出来,原因还不原创 2018-02-28 22:38:53 · 203 阅读 · 0 评论 -
指针数组、数组指针
指针数组:本质是一个数组,数组的元素是指针; 数组指针:本质是一个指针,指向一个数组;实际测试:原创 2018-02-28 22:07:11 · 234 阅读 · 0 评论 -
keil报警告(129): warning: #1-D: last line of file ends without a newline
keil报警告USART.c(129): warning: #1-D: last line of file ends without a newline,文件结束没有以新的一行结束原创 2018-02-28 10:37:51 · 16261 阅读 · 3 评论 -
C语言编译出现give arg types警告问题
C语言编译时:void S34S_set();括号参数类型未指明,出现give arg types警告;void S34S_set(void);不会出现give arg types警告。原因分析:C语言中,使用void来指示函数声明中不需要参数。即若函数没有形参,必须加上void,即S34S_set(void);C语言中,函数fun()的默认含义是fun()函数有任意多的参数,并非我们的本意(函数...原创 2017-12-01 08:48:35 · 14253 阅读 · 0 评论 -
C语言关键字auto、register、const、static、extern
autoauto关键字在我们的程序中基本看不到,一般在定义局部变量时都自动省略了。void fun(void) { int a;/*等价于auto int a 语句,a是在函数内部定义, a是局部变量,分配在栈上,它的作用域是fun函数内。*/ .... }registerregister是定义一...原创 2018-02-09 10:27:20 · 491 阅读 · 0 评论 -
C语言中volatile关键字的学习
背景:最近在学习STM32L152芯片,看到对应的HAL库中经常见到volatile关键字,对该关键字不是很明白,所以总结一下该关键字的使用。学习内容记录:volatile单词的意思:易变的。在学习volatile之前,先简单理解一下编译器的优化。如下例:uint8_t i;i=0;i=1;i=2;这段程序中,编译器可能会认为只有i=2;这句才有意思,把i存储在某个原创 2017-12-18 10:02:10 · 6096 阅读 · 2 评论 -
浮点数在内存中是怎么存储的?
浮点数存储原创 2018-04-04 18:18:03 · 25536 阅读 · 7 评论