结构体按下标来访问

   昨天在项目中遇到这样一个问题:需要把结构体中的成员一一取出发送。

   我想一个一个取出来太死板,就想着能不能用下标的方法去解决。先是问了几个朋友,他们也没有这么做过。于是google。在http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3221128&bbs_page_no=1&search_mode=3&search_text=yulutong&bbs_id=9999的网友lxyppc提出了这样一种处理方法:

 

ContractedBlock.gif ExpandedBlockStart.gif 代码

   
1 #define u8_t 1
2   #define u16_t 2
3   #define u32_t 3
4 #define float_t 4
5 typedef struct {
6 u8 t; // 类型说明
7 union{
8 u8 u8Var;
9 u16 u16Var;
10 u32 u32Var;
11 float fVar;
12 }un;
13 }my_t;
14
15 struct {
16 my_t d1;
17 my_t d2;
18 my_t d3;
19 my_t d4;
20 }sum = {{u8_t},{u16_t},{u32_t},{float_t}};
21
22 void InitMy_t(my_t * p)
23 {
24 switch (p -> t){
25 case u8_t:
26 p -> un.u8Var = 0x12 ; break ;
27 case u16_t:
28 p -> un.u16Var = 0x1234 ; break ;
29 case u32_t:
30 p -> un.u32Var = 0x12345678 ; break ;
31 case float_t:
32 p -> un.fVar = 12.3456 ; break ;
33 default :
34 break ;
35 }
36 }
37
38 for (my_t * p = & sum.d1; p <=& sum.d4; p ++ ){
39 InitMy_t(p);
40 }
41

 

   我大概看了下,这样处理还是很巧妙的。但是我的结构体中成员不是很多,所以也就没有采用下标访问。不过也许将来会用到这种方法。先保存着吧.

转载于:https://www.cnblogs.com/CHYGO/articles/1809497.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值