定义结构体时候初始化引起的问题

编译时候发生错误

bsp/gpio/bsp_gpio.h:18:20: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘attribute’ before ‘=’ token u8 default_dir = 0;

bsp/gpio/bsp_gpio.c:10:38: error: ‘gpio_pin_config_t’ has no member named ‘default_dir’
gpio_pinwrite(base,pin,config->default_dir);

错误的定义结构体
这是因为,定义结构体只是定义了数据类型,并不会在这个时候分配内存,如果这时候给它初始化,就会报第一个错误。同时,因为定义不正确,直接导致这个default_dir成员不能被识别,进而报第二个错误。

接下来看第二类错误

bsp/gpio/bsp_gpio.h:4:42: error: unknown type name ‘gpio_pin_config_t’
void gpio_init(GPIO_Type *base, int pin, gpio_pin_config_t *config);

不能识别类型名。

错误代码
这是因为代码编译的时候会去找函数声明,来到头文件找到你的函数声明,但是声明里面又有编译器还不认识的东西!因为编译器只看到了开头,还没看下面。因此我们在编写头文件的时候,最重要的一条原则是一定要把函数声明放在所有结构体定义的最下面!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值