
C语言
白鲸入海
嵌入式软件类,蓝牙BLE-2.4G开发,杰理/泰凌 蓝牙ble方案开发,杰理音频方案开发,定制键鼠方案开发,语音遥控器方案开发。BLE触摸方案开发。
展开
-
C语言宏##的用法举例
C语言宏用法原创 2022-05-05 11:47:51 · 1546 阅读 · 0 评论 -
一个C语音自动变量分配地址问题
char *localized_time(char *filename){ struct tm *tm_ptr; struct stat stat_block; char buffer[120]; stat (filename, &stat_block); tm_ptr = localtime(&stat_block.st_mtime); strftime(buffer, sizeof(buffer),"%a %b %e %T %Y", .原创 2021-06-17 09:35:07 · 386 阅读 · 0 评论 -
do {...} while (0) 在宏定义中的作用
https://www.cnblogs.com/lanxuezaipiao/p/3535626.html如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:...转载 2021-06-04 09:35:14 · 380 阅读 · 0 评论 -
C语言的头文件包含注意事项
前言:很多事不深入以为自己懂了,但真正用到项目上,才发现了问题。曾以为自己写C语言已经轻车熟路了,特别是对软件文件的工程管理上,因为心里对自己的代码编写风格还是有自信的。(毕竟刚毕业时老大对我最初的训练就是编码格式的规范化处理)曾以为,一个.c文件对应一个.h文件,.c文件只包含它自身的.h文件就好,若.c文件中用到其他文件中的内容,则.h文件把用到的头文件包含进来就可以了。自己貌似一直秉承这个理念在进行代码编写(好可怕)。工程文件数量小时,这种理念貌似看不出问题,但随着工程文件数量越来越多,我转载 2021-06-02 09:55:13 · 1755 阅读 · 0 评论 -
数组指针和指针数组的区别
参考:https://www.cnblogs.com/mq0036/p/3382732.html数组指针(也成行指针)定义:int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个数组的长度为n,也可以说p的步长为n,也就是说执行p+1时,p要跨过n个整型数据的长度。如果要将二维数组赋值给一个指针,应该这样赋值。int a[3][4];int...转载 2019-07-11 16:30:19 · 201 阅读 · 0 评论 -
sh: ./i2c_test: not executable: 64-bit ELF file No such file or directory
在ubuntu服务器上编译一个简单c程序,但是push进去开发板厚,发现在开发板上执行失败。编译:arm-linux-gcc -o i2c_test i2c_test.c生产i2c_test文件,adb push i2c_test / push到目标开发板上,执行:./i2c_test提示:sh: ./i2c_test: No such file or...原创 2019-03-12 18:15:31 · 5649 阅读 · 1 评论 -
嵌入式经典面试问题
一、. 关键字static的作用是什么? 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问, 但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这 个函数被限制在声明它的模块的本地范围内使用。 ...原创 2018-10-10 16:30:56 · 663 阅读 · 0 评论 -
二叉树
基本概念:节点的度:一个节点的孩子个数称为该节点的度。节点的层次:人为规定树的根节点的层次为1,后代节点的层次依次加1.树的高度:树中节点层次的最大值。终端节点:度为0的节点,也就是最末端的叶子节点。二叉树的概念:指任意节点的度小于或等于2的有序树。如果一个二叉树有k层,则他的节点的个数最大可以达到2的k次方减一个,若达到则称为满二叉树。二叉搜索树,BST(Binary...原创 2018-10-10 09:53:57 · 210 阅读 · 0 评论 -
Linux进程间的通信方式
Linux进程间的通信方式有以下6种。1.无名管道(PIPE)和有名管道(FIFO)。2.信号3.system V-IPC之共享内存。4.system V-IPC之 消息队列。5.system V-IPC之信号量。6.套接字。 一、无名管道(PIPE)和有名管道(FIFO)pipe只能在一个进程中被创建出来,然后通过继承的方式将它的文件描述符传递给子进程,因此p...原创 2018-10-11 11:28:56 · 157 阅读 · 0 评论 -
text段、bss段、data段、堆、栈
text段为代码段,用于保存可执行指令。data段为数据段,用于保存有非0初始值的全局变量和静态变量。bss段为数据段,用于保存没有初始值或初始值为0的全局变量和静态变量。堆:用于动态分配内存。栈:用于实现函数调用、存储局部变量。被调用函数在执行前,它会将一些寄存器的值保存在栈中, 其中包括返回地址寄存器lr,如果知道了所保存的lr寄存器的值,那么就可以知道它的调用者是谁。在栈...原创 2018-09-09 18:24:50 · 451 阅读 · 0 评论 -
Makefile 介绍
makefile的格式一般为:target : dependency_files command //Makefile 中,每个command前面必须要有一个tab符,否则会出错。例如:有两个文件 hello.c hello.h,则Makefile文件应该这样写:hello.o : hello.c hello.h...原创 2018-09-11 16:11:42 · 143 阅读 · 0 评论 -
GCC编译的流程
GCC的编译流程分为4部:1.预处理2.编译3.汇编4.链接一、GCC编译选项分析后缀名 所对应的语言 -c 只编译不链接,生成目标文件“.o” -S 只编译不汇编,生成汇编代码 -E 只进行预编译,不做其他处理 -g 在可执行程序中包含标准调试信息 -o file 把输出文件输出到file里 -v 打印出编...原创 2018-09-11 13:59:25 · 167 阅读 · 0 评论 -
单向链表的操作
以单向链表为例创建链表struct student { int age; int num; struct student *next;};typedef struct student LIST;LIST *CreateList(void){ LIST *h, *prev, *cur; int i, n; srand((int)time(0)); h = NUL...原创 2018-08-30 10:26:05 · 160 阅读 · 0 评论 -
typedef定义数据类型
用typedef重新定义数据类型很常用1.用typedef重新定义普通类型数据。typedef int count //将int重新命名为counttypedef float score //将float重新命名为score 2,用typedef将为指针类型重新命名typedef float *POINT //POINT被定义为指针类型POINT P;//P被定义为f...原创 2018-08-29 09:47:42 · 2727 阅读 · 0 评论