疑难问题,请大家看看能否解决
hudp 2007-09-27 08:44:11 一 问题:
一句话描述为:通过字符串(如:a.b.c)获取对应变量(即c)相对于及至的偏移量和变量类型。
二 具体描述:
1 如下定义结构体:
typedef struct {
int c;
}T_B1;
有对应的打印函数PringB1( char* name ,void* value )解析显示T_B1的成员和值信息;
typedef struct {
char d1;
char d2;
char d3;
char d4;
}T_B2;
有对应的打印函数PringB2( char* name ,void* value )解析显示T_B2的成员和值信息;
typedef struct {
T_B1 b1;
T_B2 b2;
}T_A;
有对应的打印函数PrintA( char* name ,void* value )解析显示T_A的成员和值信息;
2 定义如下变量
T_A a;
3 并有第一层注册信息表如下:
[“a”,&a, PrintA]
PrintA 是打印T_A成员信息和值的函数指针,原型是PrintA( char* name, void* value);
name 名称,即注册表中a;value 被打印变量地址,即注册表中&a。
4 现在输入 Print "a.b1.c"(至少两个.)希望能找到变量c相对于&a的偏移量,并且知道c的类型是T_B1。
5 最好使用宏实现,要求不需要作过多的运算,以免影响效率,c语言实现。
三 提示:目前已有实现方式,就是在解析实现函数PrintA中,比较字符a.b1.c等,但每次都需要从上到下比较一次,比较浪费效率。