STM32/STM8技术论坛
直播中

663593

12年用户 557经验值
私信 关注
[问答]

keil中的结构体问题

typedef struct
{
         float kp;
         float ki;
         float kd;
}camera_pid;
camera_pid pos_pid;

对于上述的结构体,接下来写
pos_pid.kp = 1.0;
系统一直提示:unkown type name of 'pos_pid'

但我接下来在一个函数中定义却没有问题,比如:
void fun (void)
{
pos_pid.kp = 1.0;
}
却不会报错,不知道什么原因,请教下大家

已退回1积分

回帖(12)

sex.dream

2015-10-14 16:10:58
你的结构体定义在哪里定义的?
举报

628215

2015-10-14 16:16:08

typedef struct
{
         float kp;
         float ki;
         float kd;
}camera_pid;
struct camera_pid pos_pid;

这个样子就行了。
-------------------------例如:
struct stuff{
        char job[20];
        int age;
        float height;
};
struct stuff Huqinwei;
举报

1653339509.516700

2015-10-14 16:27:23
结构体全局变量要用另一种方式写
你试试定义的时候用{}初始化
举报

维生素B2

2015-10-14 16:55:37
呵呵,楼主!你直接在函数外赋值吗??pos_pid.kp = 1.0;
函数外部不能赋值吧!!要不就在定义的时候初始化,比如camera_pid pos_pid={0,0,0};
举报

枫凌94

2015-10-14 21:06:39
我也遇到过这样的问题,函数库中定义的函数不能直接使用,一直报错,求解答
举报

mop

2015-10-15 15:28:23
設定初始值如下範例:
camera_pid pos_pid={1.0,1.0,1.0};
举报

王胜军

2015-10-15 17:09:43
我还是没明白你这是什么意思!你说的接下来写:pos_pid.kp = 1.0;是写在申明后面吗?如果是在后面那怎么不报错呢?这是一条语句!不是申明也不是定义怎么能放在{}外面?
举报

daiyuanxinshi

2015-10-16 20:31:57
初始化结构体变量应该是struct camera_pid pos_pid;你少了struct
举报

李秋华

2015-10-21 22:56:59
引用: daiyuanxinshi 发表于 2015-10-16 20:31
初始化结构体变量应该是struct camera_pid pos_pid;你少了struct

他前面定义了类型,后面定义数据就可以不用struct
举报

dnxbzcl

2015-10-22 14:06:28
如果不是语法问题,应该在h 文件没有添加!
举报

daiyuanxinshi

2015-10-24 15:43:24
看错了  结构体在函数体外不能赋值 的 你百度一下就知道了,基本类型变量是可以的.
举报

mengyy

2015-10-24 17:31:14
安富莱的开发板有好像有这方面的,你去他们网站看下
举报

更多回帖

发帖
×
20
完善资料,
赚取积分