[STM32F1] keil中的结构体问题

[复制链接]
 楼主| 发表于 2015-10-13 18:10 | 显示全部楼层 |阅读模式
  1. typedef struct
  2. {
  3.          float kp;
  4.          float ki;
  5.          float kd;
  6. }camera_pid;
  7. camera_pid pos_pid;

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

但我接下来在一个函数中定义却没有问题,比如:
void fun (void)
{
pos_pid.kp = 1.0;
}
却不会报错,不知道什么原因,请教下大家
发表于 2015-10-13 18:16 | 显示全部楼层
楼主你太有才了,你弄错了,应该加struct 、

点评

用过typedef 不需要再加 struct  发表于 2015-10-15 09:09
发表于 2015-10-13 18:17 | 显示全部楼层
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;
 楼主| 发表于 2015-10-13 18:58 | 显示全部楼层
734774645 发表于 2015-10-13 18:17
typedef struct
{
         float kp;

没用的,我试过,structs可心省略的
发表于 2015-10-13 20:51 来自手机 | 显示全部楼层
结构体全局变量要用另一种方式写
发表于 2015-10-13 20:52 来自手机 | 显示全部楼层
你试试定义的时候用{}初始化
发表于 2015-10-13 23:21 | 显示全部楼层
呵呵,楼主!你直接在函数外赋值吗??pos_pid.kp = 1.0;
函数外部不能赋值吧!!要不就在定义的时候初始化,比如camera_pid pos_pid={0,0,0};

评分

参与人数 1威望 +1 收起 理由
ast145 + 1 很给力!

查看全部评分

发表于 2015-10-14 10:40 | 显示全部楼层
第一个赋值是在函数外面了
发表于 2015-10-14 12:51 来自手机 | 显示全部楼层
变量只能才定义的时候初始化,不能单独在函数体外用另外的语句初始化
发表于 2015-10-14 14:20 | 显示全部楼层
结构体只能在定义的时候直接初始化或者在函数内部重新赋值啊。你写在函数外面不行啊。
发表于 2015-10-14 15:29 来自手机 | 显示全部楼层
函数是程序的基本单位噢
发表于 2015-10-14 15:30 来自手机 | 显示全部楼层
函数是程序的基本单位噢
发表于 2015-10-14 15:31 来自手机 | 显示全部楼层
函数是程序的基本单位噢
发表于 2015-10-14 16:07 | 显示全部楼层
还能这么写,谢楼主分享
发表于 2015-10-14 17:06 | 显示全部楼层
styleno1 发表于 2015-10-14 16:07
还能这么写,谢楼主分享

你不要骗楼猪,楼猪也是读过小学的人
发表于 2015-10-14 21:10 | 显示全部楼层
你可能是想初始化那个结构体,但你的方法不正确
发表于 2015-10-14 21:12 | 显示全部楼层
struct camera_pid pos_pid ={1.0,1.0,1.0};
初始化必须在定义它的时候写
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

27

帖子

0

粉丝
快速回复 返回顶部 返回列表