c语言中container_of, typeof, offsetof这些是哪个标准的?

c语言中container_of, typeof, offsetof这些是哪个标准的?,第1张

1. container_of是Linux内核中实现的宏,不是C语言的标准函数。不能跨平台。

#define container_of(ptr, type, member) ({ \

const typeof( ((type *)0)->member ) *__mptr = (ptr) \

(type *)( (char *)__mptr - offsetof(type,member) )})

2. typeof是GNU C的扩展,不是ISO标准中的函数。用gcc编译可以跨平台。

3. offsetof是C语言标准库中的宏,定义在头文件stddef.h中。可以跨平台。

说一个方向:使用typeof(),即typeof关键字, 如:typeof(var or express)。typeof() 是GUN C提供的一种特性,可参考C-Extensions,它可以取得变量的类型,或者表达式的类型.方向有了,具体还是要自己深入去研究,如包含什么头文件等。

c/c++判断变量的数据类型可以采用下面的代码

#include <typeinfo>

using namespace std

...

cout <<typeid(d).name() <<endl

扩展资料:

变量类型

C语言中,变量分为全局变量和局部变量;也可以这样分:自动变量,静态变量.前者是按变量作用范围来分的,而后者是按变量存储方式来分的。

在C语言中,如果按存储占用空间来分,包括:

整型变量(代码为int),整型变量包括长整型变量(代码为long int)以及短整型变量(代码为short int),字符型变量(代码为char),浮点型变量(代码float)等。当然还有数组,结构体变量等.但新手需要注意的是,每一种变量类型最终都对应的格式字符.如:%d。

参考资料来源:百度百科-变量 (计算机名词)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8024769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存