![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言高级用法
sweird
知其然,并知其所以然。揭开上层重重迷雾,去了解计算机的本质,去了解操作系统的本质,解开曾经的迷惑,怀着十二分的热情,用我的一生去完成。
展开
-
C语言高级用法---typeof()关键字
前言typeof() 是GUN C提供的一种特性,可参考C-Extensions,它可以取得变量的类型,或者表达式的类型。本文总结了typeof()关键字的常见用法,并给出了相应的例子,以加深理解 。typeof()关键字常见用法typeof()关键字常见用法一共有以下几种。不用知道函数返回什么类型,可以使用typeof()定义一个用于接收该函数返回值的变量#include <...原创 2019-06-02 17:46:55 · 86644 阅读 · 8 评论 -
C语言高级用法---typeof( ((type *)0)->member )和offset_of()
ANSI C标准允许值为0的常量被强制转换成任何一种类型的指针,并且转换的结果是个NULL,因此((type *)0)的结果就是一个类型为type *的NULL指针.如果利用这个NULL指针来访问type的成员当然是非法的,但typeof( ((type *)0)->member )是想取该成员的类型,所有编译器不会生成访问type成员的代码,类似的代码&( ((type *)0)...原创 2019-06-03 09:20:00 · 7056 阅读 · 0 评论 -
C语言高级用法---container_of()
在Linux内核源码中,实现和链表相关的接口list_entry()时,会调用container_of()宏定义,它的作用是:给定结构体中某个成员的地址、该结构体类型和该成员的名字获取这个成员所在的结构体变量的首地址。container_of()宏定义实现如下所示/** * container_of - cast a member of a structure out to the cont...原创 2019-06-03 13:58:15 · 24265 阅读 · 4 评论