![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
Old_Driver_Lee
Old Driver
展开
-
C语言:【U-boot 和 kernel】添加【调试log宏】
1、uboot调试宏定义(#include <common.h>)1、在【include/common.h】中加入如下宏定义,2、其他c文件头加入:【#include <common.h>】即可使用该宏了。//lsy log#define LSY_DEBUG 1#ifdef LSY_DEBUG #define LSY_DEBUG_POSITION(format, ...) \ do {原创 2021-06-23 10:38:03 · 536 阅读 · 0 评论 -
C语言如何计算数组成员个数
C语言如何计算数组成员个数?Linux内核源码中有一个宏定义:#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))其中:x:为数组名。ARRAY_SIZE(x):结果就是数组成员个数。原创 2021-05-08 14:57:52 · 2789 阅读 · 0 评论 -
C语言:代码规范浅谈&摘录(包含【华为代码规范】部分规则摘录)
文章目录1.概述1.1.编写目的1.2.文档约定2.排版要求2.1.代码风格2.2.头文件(h文件)排版顺序2.3.源文件(c文件)排版顺序2.4.引用文件顺序2.5.缩进 & 对齐2.6.空行2.7.空格2.8.变量定义位置2.9.行宽:长语句 & 长表达式2.10.函数行数2.11.长参数2.12.短语句2.13.条件循环语句2.14.花括号(程序块分界符)(K&R风格)2.15.操作符前后空格2.16.避免过度依赖优先级2.17.宏函数3.注释规范3.1.文件头注释3.2.常规原创 2020-10-12 20:10:09 · 1613 阅读 · 0 评论 -
C语言:【位域操作】(结构体中使用冒号)
文章目录一、 什么是C语言位域操作(结构体中使用冒号)1.1 位操作1.2 位域操作产生的原因1.3 位域操作1.4 备注二、位域操作示例——4字节(32bit)变量操作2.1 代码2.2 打印结果三、位域操作示例——1字节(8bit)变量操作3.1 代码3.2 打印结果四、寄存器定义使用示例——32位寄存器实例4.1 结构体定义:头文件reg.h中定义寄存器通用类型4.2 结构体定义:头文件am437x_io_mux.h中定义外设模块寄存器4.3 结构体使用:文件spi.c一、 什么是C语言位域操作(结原创 2020-10-12 15:17:50 · 3089 阅读 · 0 评论 -
搞笑log集锦
备注:此博客会不定时更新,欢迎广大车友留言推荐各种有意思的log。1、代码#include <stdio.h>void HappyLog1(void);void HappyLog2(void);void HappyLog3(void);void HappyLog4_DaXieDeWU(void);void HappyLog5(void);void HappyLog6(void);int main(int argc, char *argv[]) { HappyLog1原创 2020-06-04 09:33:31 · 324 阅读 · 0 评论 -
Linux C中动态链接库的使用
文章目录1、工程1:生成动态链接库【libcaculate.so】1.1 代码2、工程2:项目工程(使用动态链接库)2.1 代码2.2 终端执行命令2.3 结果展示3、学习动态链接库时遇到的坑3.1 接口声明文件xxx.h3.2 环境变量LD_LIBRARY_PATH的设置动态链接库可以简单这么理解:有两个工程:【工程1】专门用来生成.so链接库文件,生成库以后只需要保留libxxx.so库文件即可,其他文件均可以不需要。【工程2】为实际项目工程,需要使用上面的so库。下面以一个简单的加减乘除原创 2020-05-15 21:48:27 · 699 阅读 · 0 评论 -
getopt()函数详解
1、函数原型int getopt(int argc, char * const argv[], const char *optstring);2、含义解析命令行参数。Linux命令格式如下:命令 [-选项] [参数]cmd [-option] [paramater]例如:cmd -a -bcmd -a aParamater -b bParamater其中带-的表示【选项】,后面跟着的是选项对应的参数。3、参数参数含义原创 2020-05-09 16:15:40 · 1350 阅读 · 0 评论 -
C语言:回调函数
刚刚学习了下回调函数,对于理论有了初步的了解,写了个简单的demo验证了下,还没具体在项目中应用,所以理解可能还不到位,暂时先简单记录一下,以后碰到实际项目,理解更深刻了再回头补充。下面从几个方面阐述自己的简单理解:一、回调函数是什么?(回调函数概念)二、回调函数能干啥?(应用场景)三、回调函数如何实现?(代码实现)一、回调函数是什么?(回调函数概念)三句话描述:(后面代码小节会根据该...原创 2020-03-12 15:32:39 · 290 阅读 · 0 评论 -
工程思维:【common.h】基本变量typedef重命名
定义common.h文件,其他c文件要用这些基本定义时可以直接在文件头加上#include "common.h"引用该.h文件即可。#ifndef COMMON_H#define COMMON_Htypedef void GF_VOID;typedef NULL GF_NULL;typedef char GF_CHAR;typedef char ...原创 2019-05-09 13:25:57 · 821 阅读 · 0 评论 -
GCC编译过程
我们平时写的c代码,计算机是不认识的,计算机认识的只是0、1这些二进制代码。那么我们写的c代码又是怎么转换为二进制代码的呢,?其实我们平时用的编译器就是将这个转换过程一步一步集成在了一起,今天学了学编译流程,根据以下几个问题做个笔记,以为备忘:1、编译过程具体有什么步骤?2、都有啥阶段,每个阶段又都干了什么事情?解答:编译过程总共分为4步:预处理、编译、汇编、链接。具体每个阶段干的工作...原创 2018-11-05 21:42:14 · 210 阅读 · 0 评论 -
原码、反码、补码
计算机中数分为正数和负数(包括正浮点数和负浮点数)。 规定:最高位为符号位,0表示正数,1表示负数。注意:1、原码反码补码变换时【符号位】不参与变换2、计算机中保存正数由于【正反补】三码相同,故理解为以三者中任一形式保存都对3、计算机中保存负数以【补码】的形式保存一、定义:1、原码正数原码 = 本身 负数原码 = 符号位不变 + 该负数的绝对值(相反数)原创 2018-01-11 15:19:18 · 3849 阅读 · 5 评论 -
C语言:生成随机数(含STM32/STM8使用AD获取随机数)
1、C语言生成伪随机数在C语言中,为了生成随机数,可以使用如下两个函数:void srand(unsigned int seed);int rand(void);srand()和rand()配合使用产生伪随机数序列。srand()函数用来生成一个种子,rand()函数可以用来产生伪随机数(不是真正意义上的随机数)。 原理是根据一个数,我们可以称它为种子,为基准以某个递推公式原创 2018-01-23 09:37:45 · 4111 阅读 · 0 评论