- 论坛徽章:
- 0
|
我想很多人没有明白楼主的意思。
声明一结构体:
typedef struct {
char ca;
short sb;
int ic;
// ...
// ...
} example_t;
若定义:
example_t* tmp;
tmp.ca = 0xFF;
tmp.sb = 0x00FF;
tmp.ic = 0x000000FF;
// ...
// ...
想必楼主希望用一条printf语句打印出其所有成员的值,而不需要罗列所有变量的成员名,打印出来应该是这个样子:
>0xFF
>0x00FF
>0x000000FF
>...
>...
我搜了一下,一个被定义了的结构体,其起始地址、大小、每个成员的size和offset是可以计算出来的:
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
#define FSIZE(type, field) sizeof(((type*)0)->field)
#define FPOS(type, field) ((dword) & ((type*)0)->field)
但是,在C语言这一层,如果没有field变量名,我想,应该是求不出size和offset的吧。
如果能解决这个问题,那对任一结构体的遍历打印,应该是可以简单地实现了。反之,楼主的问题就无解。 |
|