如何让程序输出结构体或者类的变量名?

verybigbug 2004-04-09 11:17:03
如何让程序输出结构体或者类的变量名?

比如:
typedef struct MY_TEST
{
int nType;
char typeName[256];
}MY_TEST, *LPMY_TEST;

在程序中如何写代码可以实现程序自动输出结构体的变量名。

函数:
OutputMyStrunt(MY_TEST);

希望输出结果
output:
int nType;
char typeName[256];

这样,我在增加变量时,重新编译一下程序就可以了,而无需修改输出代码。

typedef struct MY_TEST
{
int nType;
char typeName[256];
int newType;
}MY_TEST, *LPMY_TEST;

可以用什么宏实现?就像VC中的自动提示一样。
...全文
235 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ToIP 2004-04-11
  • 打赏
  • 举报
回复
同意楼上的
zhujianping_es 2004-04-11
  • 打赏
  • 举报
回复
Nothing could do that !
If you want to do this ,at lease you should explict pass the names of
each field of the structure.However that is what you are trying to avoiding!


enoloo 2004-04-11
  • 打赏
  • 举报
回复
luck. -:)
enoloo 2004-04-11
  • 打赏
  • 举报
回复
CObject可以动态识别和输出类名。说说CObject是怎么做的,其实他也是一个用一个链表,从基类开始,都保存了类名,然后通过继承关系,将这个表串成链表,然后寻找就方便了。

怎么保存名字。用DECLARE_DYNAMIC(class_name) static CRumtimeClass class##class_name;
##表示用class_name和class连到一起形成一个串,具体可以看msdn.

然后,IMPLEMENT_DYNAMIC(class_name,base_class_name)的时候用函数取回这个名字。

在结构体中也可以写类似的宏,把结构体的名字传进去。

good lock.
xrenwu 2004-04-09
  • 打赏
  • 举报
回复
关 注
verybigbug 2004-04-09
  • 打赏
  • 举报
回复
有什么宏还是有什么函数可以分析结构体?
verybigbug 2004-04-09
  • 打赏
  • 举报
回复
是呀,所以应该要用宏,在编译期间就必须确定。
itmaster 2004-04-09
  • 打赏
  • 举报
回复
不好处理
输出函数怎么知道结构体中有多少变量,各个变量是何类型呢?
verybigbug 2004-04-09
  • 打赏
  • 举报
回复
〉读源代码,定位,输出,可不可以

不可以,程序运行时已经没有源代码了。所以说是编译期间的工作。
就希望实现类似offsetof的宏,不过offsetof是得到偏移量,我现在希望得到变量名。
薛定谔之死猫 2004-04-09
  • 打赏
  • 举报
回复
要么把字符串固化到程序文件或其它记录文件
verybigbug 2004-04-09
  • 打赏
  • 举报
回复
我就是不希望在建立一个数组。比如,我希望打印出一些Windows已经定义好的结构体。
这样就无需重新把已经定义好的结构体再重新定义一次。
rzsheng 2004-04-09
  • 打赏
  • 举报
回复
好像没有什么宏可以自动实现将结构体的表示方法转换成字符串赋给字符数组。
薛定谔之死猫 2004-04-09
  • 打赏
  • 举报
回复
读源代码,定位,输出,可不可以
rzsheng 2004-04-09
  • 打赏
  • 举报
回复
另外建立一个字符串数组,将结构体表示方法的字符赋给这个字符串数组,打印这个数组就OK了。
不过我还不是很明白你这样做的意义。
verybigbug 2004-04-09
  • 打赏
  • 举报
回复
可以呀,下面该如何遍历得到变量的名称?这个工作应该是在编译时完成的,
所以,有没有什么宏可以实现?
zjg751206 2004-04-09
  • 打赏
  • 举报
回复
把类名称付给字符串不行吗??
verybigbug 2004-04-09
  • 打赏
  • 举报
回复
用什么方法可以实现? 分不是问题。 我有很多分。
verybigbug 2004-04-09
  • 打赏
  • 举报
回复
u p

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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