【C语言】C语言错误收集

1.0 error: #70: incomplete type is not allowed

问题描述:

在调试PID的过程中,为了使用蓝牙串口修改PID参数,在串口接收处理函数处引用PID结构体,不成功。
谷歌了一下午,在40度的气温下,头都昏了,结果还是没解决结构体外部引用失败的问题。最终,采取引用外部变量而非结构体解决了问题。

解决方案:

  • 目的: 通过蓝牙串口修改PID结构体内的三个参数kp,ki,kd。
【C语言】C语言错误收集_第1张图片
PID结构体

我是如何成功实现的?(成功方案)

  • 方法: kp,ki,kd三个参数在PID.C内,蓝牙串口接收处理程序在Bluetooth.C内,在PID.C内定义一个变量
    float PID_Value;在PID.h内声明extern float PID_Value;在Bluetooth.C内将接收到的数据处理后给 PID_Value,在PID.C内将PID_Value赋值给PID结构体内三个参数 kp,ki,kd。
【C语言】C语言错误收集_第2张图片
PID与Bluetooth之间的通信

我是如何失败的?(失败方案)

  • 方法:PID.C文件内定义结构体,PID.h文件内extern声明,失败。加typedef,失败。PID.C文件内extern声明结构体,PID.h文件内定义结构体,失败。

参考资料:

  • 问题01:error: #70: incomplete type is not allowed的参考资料
  1. keil环境下,报错#70: incomplete type is not allowed,解决方法
    http://www.cnblogs.com/htsky/p/5936703.html
  2. error: #70: incomplete type is not allowed——已解决!
    http://blog.csdn.net/dcx1205/article/details/9097491
  3. keil中error: #70: incomplete type is not allowed——已解决!
    http://blog.csdn.net/super_demo/article/details/17758601

你可能感兴趣的:(【C语言】C语言错误收集)