C语言 枚举(enum)、宏定义(#define)、结构体(struct)的一种联合应用

最近看到一种枚举、宏定义、结构体联合的应用,对我这种初学者很有帮助,所以总结一下记录在这,为以后方便查阅,有需要的朋友也可以做一个参考.

实际操作就是用宏定义初始化接头体具体操作代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<string.h>

typedef enum
{
    date_head  = 0x20,
    byt_second = 0x0,
    byt_third = 0x0,
    byt_forth = 0x0,
    dest_addr_high = 0xff,
    dest_addr_low = 0xff,
    pck_len = 0x17,
    date_cmd = 0x91                                    
}Led_TypeDef;

我用枚举做了一个数据包格式

#define DATA_INIT_DEFAULT \
{\
date_head,\
byt_second,\
byt_third,\
byt_forth,\
dest_addr_high,\
dest_addr_low,\
pck_len,\
date_cmd\
}

然后把枚举做一个宏定义

typedef struct  _LedControlPackage_t
{
     unsigned char    data_header;
     unsigned char    byte_second;
     unsigned char    byte_third;
     unsigned char    byte_forth;
     unsigned char    destination_addr_high;
     unsigned char    destination_addr_low;
     unsigned char    package_len;
     unsigned char    cmd;                            
}LedControlPackage;

做一个结构体数据包

int main()
{
    LedControlPackage   init = DATA_INIT_DEFAUL;//用宏定义初始化结构体
    printf("%d \n",init.data_header);
    printf("%d \n",init.byte_second);
    printf("%d \n",init.byte_third);
    printf("%d \n",init.byte_forth);
}

用宏定义初始化结构体,这里面需要注意的几个地方:
1.宏定义的时候需要注意续行符号别丢掉
2.初始化的时候,要 LedControlPackage init = DATA_INIT_DEFAUL;
不要LedControlPackage init;
init = DATA_INIT_DEFAUL;
3.如果初始化的项目比实际结构体中的项目少,那么结构体中多余的项目默认初始化为0;

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值