疑难问题,请大家看看能否解决

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等,但每次都需要从上到下比较一次,比较浪费效率。
...全文
158 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MPTD_Fire 2007-10-12
  • 打赏
  • 举报
回复
晕乎乎的,LZ说清楚点拉
飞哥 2007-10-12
  • 打赏
  • 举报
回复
还没怎么理解
星羽 2007-09-29
  • 打赏
  • 举报
回复
对你的意思还是有点不清楚

不过如果你的调用方式是

Print "a.b1.c"

用宏解决不了

除非改成

Print(a, b1, c)

而且不能通过输入的方式

cqpp 2007-09-27
  • 打赏
  • 举报
回复
看看编译原理怎么做的吧,不会你做调试器,仿真器吧?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧