![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C语言
文章平均质量分 88
记录一些C语言GNU语法及编译原理
Linux随笔录
一名Linux驱动工程师,不仅仅记录驱动还有职场人生
展开
-
推荐应届生找工作写进简历的10个项目
GitHub上关于无人机的开源项目很多,当然这并不只适用于无人机(从传统飞机、四翼飞机、多旋翼和直升机到漫游车、船只、平衡机器人,甚至潜艇),ardupilot是一个开源自动驾驶仪软件项目。FreeModbus是一款开源的Modbus协议栈,Modbus在工业产品用的比较多,不过只有从机开源,主机源码是需要收费的。原创 2024-05-05 12:53:20 · 335 阅读 · 0 评论 -
内核中常用宏定义| container_of
最后一句的意义是拿到结构体成员member的地址,减去这个成员在结构体type中的偏移,结果就是结构体type的首地址。这个宏有两个参数,一个是结构体类型TYPE,一个是结构体成员MEMBER,就是获得0地址常量指针的偏移是一样的,如果是结构体的首地址为0的话,那么获取的变量地址既是绝对地址也是结构体内的偏移。container_of是内核中使用最为常用的一个函数了,简单来说,它的主要作用是根据结构体中的已知的成员变量的地址,来寻求该结构体的首地址,直接看图,更容易理解。type, 表示结构体的类型。原创 2024-05-05 12:03:17 · 765 阅读 · 0 评论 -
内核中C语言高级语法 | attribute
别急喜欢我的文章可以在公众号右上角设置为星标。当你在一个函数声明或定义前加上__attribute__((constructor))属性时,就会告诉编译器,在程序加载时(在main函数执行之前),需要自动调用这个函数。__ attribute__((section("name"))): 使用__attribute__ 来声明一个 section 属性,主要用途是在程序编译时,将一个函数或变量放到指定的段,即 section 中。因此,在程序启动时,它们将按照a()->b()->c()->d()的顺序执行。原创 2024-05-01 10:46:44 · 382 阅读 · 0 评论 -
零数组长度的使用
零数组长度的使用零长度数组大小是多少?int main(){ char a[0]; printf("%d\n",sizeof(a)); return 0;}编译结果:0这玩意有什么作用呢?这个时候我们就可以通过a去访问后面的地址了。他更多的是被用在长度不确定的数据上。什么意思呢看下面的简单例子//声明typedef struct test{ int len; char *a; }TEST;//定义TEST *demo = (TEST *原创 2020-11-08 22:27:54 · 290 阅读 · 0 评论 -
#pragma不为人知的秘密
1、#pragma(n)和#pragma pack()#pragma pack(1) /* 1字节对齐 */struct test{ int a; char b; int c; short d;};#pragma pack() /* 还原默认对齐 */结论1:#pragma(n)和#pragma pack()一起用是在这期间保证n字节对齐,而且要成对存在#pragma(push)和#pragma(pop)#pragma(push):push是"压入"的意思。原创 2020-10-18 13:51:55 · 766 阅读 · 0 评论 -
宏的特殊用法
如果有错误,欢迎下面留言评论1.#字符串化#的作用就是将#后边的宏参数进行字符串的操作,也就是将#后边的参数两边加上一对双引号使其成为字符串。例如a是一个宏的形参,则替换文本中的#a被系统转化为"a",这个转换过程即为字符串化。#define TEST(param) #paramchar *pStr=TEST(123);printf("pSrt=%s\n",pStr);输出结果:pSrt=123表示的意思是字符串123,这里的#xxx,可以是数字也可以是字母,反正都是字符串含义2.#原创 2020-10-11 19:40:54 · 182 阅读 · 0 评论 -
Gcc的所有语法及编译过程
Gcc的所有语法及编译过程1.直接编译不加选项gcc main.c ./a.out2.-o选项这种方法 唯一要注意的就是-o后面一定要紧跟要生成的可执行文件名gcc -o main main.c./main3.-g选项用于给生成的可执行文件加上调试信息gcc -g -o main main.cgdb main4.-O选项-O用来优化,gcc默认是O0,-O3优化等级最高,但是在编译时间变长了5.-D选项5.1给源文件传递一个常量宏//main.cint main(i原创 2020-10-06 17:05:42 · 1498 阅读 · 0 评论