作业帮 > 英语 > 作业

这个宏VPORT是什么意思

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:英语作业 时间:2024/07/27 04:29:39
这个宏VPORT是什么意思
#define VPORT(member,conftype,initvalue) \
VAR(#member,conftype,member ## _lines,initvalue)
/*XXXX these next two are duplicates or near-duplicates from config.c */
#define VAR(name,conftype,member,initvalue) \
{ name,CONFIG_TYPE_ ## conftype,STRUCT_OFFSET(or_state_t,member),\
initvalue }
#define STRUCT_OFFSET(tp,member) \
((off_t) (((char*)&((tp*)0)->member)-(char*)0))
/* Non-ANSI name for compatibility */
typedef long off_t;
我已经被绕晕了
这个宏VPORT是什么意思
宏不难理解啊,VPORT和VAR作用是一样的,都是生成一个条目,这个条目的字段分别是:
{ 字段名称,一个对应的CONFIG_TYPE ,字段在结构体 or_state_t 中的偏移位置,initvalue }
至于这个条目的作用或者意义,那就要看具体是怎么使用的了.
再问: 可以说明一下“#”的作用,以及STRUCT_OFFSET的理解过程吗
再答: #是告诉编译器,在宏定义中,后面跟着的内容作为字符串来处理 ##在宏定义中,作为连接符使用 STRUCT_OFFSET宏就更简单了,假设一个结构体变量是从0地址开始的,那么其中某个字段的地址是不是就是该字段的相对偏移呢。