首页
社区
课程
招聘
[求助]关于结构成员的获取
发表于: 2009-8-6 14:31 4750

[求助]关于结构成员的获取

2009-8-6 14:31
4750
typedef struct _TEST{
int     a;
bool  b;
char   c[10];
WROD d;
}TEST,*PTEST;
假如有结构TEST如上,现在如何写一个函数实现 只传入名字 c,得出c在结构TEST中的偏移及c在结构TEST中的类型及长度?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
2
传入名字c,指的是运行时传入?如果是,这个貌似不太可能做到,因为这些结构体声明都是编译期给编译器看的,最后的exe中根本就没有记录这些成员的名称。
2009-8-6 15:00
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我找到了一些东西,如FIELD_OFFSET之类的宏,可以解决一部分问题,比如变量的长度,变量的偏移,但变量的类型和变量是否为数组还无法确定,我在网上搜了下,java有个反射机制可以获取之前定义的类型,但不知道是如何实现的.
2009-8-6 15:24
0
雪    币: 722
活跃值: (123)
能力值: ( LV12,RANK:300 )
在线值:
发帖
回帖
粉丝
4
FIELD_OFFSET的宏纯粹是在编译期计算确定的(编译器解析后直接把结果填上了),而不是在运行期。还有你这结构声明应该是C语言的,Java则是解释式语言,跟C和C++不一样。
2009-8-6 18:54
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
5
无法获得,也无需获得。
结构都是你自己写的,“c在结构TEST中的偏移及c在结构TEST中的类型及长度”这些信息编译时你都已经确定了。
2009-8-6 19:05
0
雪    币: 220
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
TEST只不过是一个实例结构,实际上我要在同一个函数处理无数个不同的结构,不同的成员名
2009-8-6 20:50
0
雪    币: 104
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
C语言编译的时候没有把元信息编译进去。像JAVA、C#、D这类的,因为把元信息——就是你说的那些——编译进了最终代码,所以反编译起来非常容易
2009-8-6 22:29
0
游客
登录 | 注册 方可回帖
返回
//