标题:有没有能自动获取结构体成员数量的方法?~~~~
只看楼主
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
已结贴  问题点数:100 回复次数:18 
有没有能自动获取结构体成员数量的方法?~~~~
在制作通用链表的过程遇到技术上的问题~具体点就是找一种自动分析结构体成员个数的方法以此来求其索引值,当然跳过这步可以~不过要另外多加个索引变量参数了~~这问题暂时没有解决思路~能否帮忙想想~~~~~~

问题是结构体成员数量以及其数据类型是不确定的~修改结构体成员数量得出结果体成员数量结果也不同~~~

例如
srturct a
{
   int a;
   int b;
};

结果体成员数量为2~~

struct b
{
    char a[20];
    int b;
    struct c
    {
       int a;
       int b;
    };
};

结构体b成员数量为3~~~~

尽量避免穷举法,以此来达到修改结构体成员数量所得到的值会相应发生变化的目的~感觉从原理上分析实现可能性不大~不知道有没有大神能给出高见??~~~~
搜索更多相关主题的帖子: 结构体 通用 技术 制作 
2017-05-18 01:23
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
顺便附加一下有没有自动获取各个结构体成员容量大小的方法~~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-18 01:29
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
可以自定义一个数据结构来说明,有点象关系数据:数据结构 + 数据。
用“数据结构”来说明“数据”的构成,各成员数据属性(名称、类型、大小等)。
2017-05-18 07:05
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 3楼 吹水佬
这是一个方法~这个看来还是要做些人为判断功夫的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-18 07:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
写链表,为什么要获得成员数量?
2017-05-18 10:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
获得成员数量,应是为了遍历结构成员。
通用链表,就要自己去解释不同链表的数据结构,这方面工作编译器应该是帮不了。
编译器只会将合法的变量名用符号表示并放到“符号表”中,每个符号对应一个地址。当调用此变量时,在符号表找对应的地址进行操作。
简单的可试试用宏,宏也算是一种解释执行吧。
2017-05-18 10:51
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:20 
通用链表为什么要获得结构中成员的数量?解释数据,不是使用者自己的事情么?

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-18 10:59
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 7楼 renkejun1942
其实本意是打算获取每一个结构体成员的容量~不跳过这一步也可以~就是要用户多调用一个容量参数~其实是打算通过结构体成员地址定位而做通用快排~目前做了一个~不过有内存泄露问题~还得改改看才行~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-18 11:54
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
感觉这个为不可解问题~除非能改变编译器的编译行为~不过如果是做汇编或者自己写编译器的可以解决~那就让它多调用一个关于偏移量或者数据容量的参数去吧~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-18 14:44
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 9楼 九转星河
有啦~要突破常规方法~~可以把代码本身写入一个临时文件~然后通过读取文件字符数据来判断结构体成员数量~~~~虽然这样实现难度较高~不过还是感觉有可能实现的~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-18 14:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477082-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.184154 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved