怎样自动提取出struct里的属性信息?

尼克徐 发布于 2014年05月09日
无人欣赏。

搜遍网络没找到提取struct里属性信息的方法。

例如:

struct Data
{
    int a;
    char mess[10];
    double c;
};

我需要做的事情是,获得struct的名字,就可以获得它里面的属性名字和属性类型,并可以对该变量根据属性名字和类型,取值和赋值。 例如:

struct Data c;
c.a = 10;
strcpy(c.mess,"aaa");
c.c = 2.5;

setdata("this_data",&c);

然后就可以用类似办法赋值:

set_value("this_data.c",2.5);
double d = get_double_value("this_data.c");
printf("this_data.c=%fn",d);

同志们有什么办法不?

共8条回复
tinyfool 回复于 2014年05月09日

什么语言?

尼克徐 回复于 2014年05月09日

c语言。(不好意思忘了说)

tinyfool 回复于 2014年05月09日

2楼 @尼克徐 你需要在运行期间?还是编译期间?还是在解释执行?

尼克徐 回复于 2014年05月09日

是在运行期间动态识别。

我目前采取的方法是手工写代码,把所有相关的struct的属性名称、类型和偏移量联系起来存储到一个结构体里。

但是不知道有没有更好的,自动化的办法,像是读类的meta信息一样方便的取得struct里的信息。

windgo 回复于 2014年05月09日

如果要是想实现类似的效果,java,或者C#等有现成的。 c的话,做个字典什么的来实现吧。

尼克徐 回复于 2014年05月09日

5楼 @windgo 我目前是这么做的。手工写代码加载属性信息。

tinyfool 回复于 2014年05月09日

4楼 @尼克徐 编译器和语言本身不支持,你可以参考一下VC和其他语言当年怎么实现RII的办法,有一些方法并不困难

尼克徐 回复于 2014年05月09日

7楼 @tinyfool 一下子让我想起了MFC里的几个宏...建议很棒,谢谢!

登录 或者 注册