永发信息网

可以把宏定义放在结构体中吗

答案:5  悬赏:60  手机版
解决时间 2021-03-18 07:23
  • 提问者网友:相思似海深
  • 2021-03-17 23:24
可以把宏定义放在结构体中吗
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-03-18 01:04
#include
#include
#define offset(a,b) (unsigned int)&(((b*)0)->a)
struct s{
int field_1;
int field_2;
};
void main()
{
printf("%d:%d",offset(field_1,struct s),offset(field_2,struct s));
}
如上,它就是一个求结构体类型中变量偏移的宏,
如上
#define offset(a,b) (unsigned int)&(((b*)0)->a)
b指的是结构体类型,也就是struct s
a指的是变量名,也就是field_1,field_2。
主要技巧就是你初始化一个基址为0的指针,然后取其成员变量,读取地址,因为首址为0,所以读取地址,然后转换为无符号整数输出就可以了。
不明白hi我。
全部回答
  • 1楼网友:鸠书
  • 2021-03-18 05:52
宏定义可以放在程序的任何地方,作用范围是从定义到文件结束或遇到#undef,放在结构体内与结构体外是一样的,写在结构体内是为了读代码方便,表示主要在这个结构体内用!
  • 2楼网友:醉吻情书
  • 2021-03-18 04:53
没文化真可怕。。。 宏定义可以放在任意的地方。当然放在结构体里也是可以的。没见过只能说明你无知。。
  • 3楼网友:往事埋风中
  • 2021-03-18 03:51
当然不能够,结构体中只能定义一些变量,你见过 struct { int i; #define ...... }example; ? 呵呵 貌似是不允许的
  • 4楼网友:鸽屿
  • 2021-03-18 02:19
可以,只是声明这个宏定义是归哪个结构体,是程序员跟程序员沟通用的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯