智能车制作

标题: K60的驱动程序里的变量为什么主程序不可调用??求大神帮忙 [打印本页]

作者: mc930411    时间: 2013-2-18 03:37
标题: K60的驱动程序里的变量为什么主程序不可调用??求大神帮忙
最近写滤波程序返回角度值,不知道怎么的不管是定义在include.h还是驱动程序,两边总有一边显示udefined,求大神指导下啊。。

作者: exiao    时间: 2013-2-18 09:15
局部变量吧
作者: dapan945    时间: 2013-2-18 09:33
只声明了,没定义
作者: 灰原姐姐    时间: 2013-2-18 10:03
一处定义,多处生明。
还有,include.h 这样的文件名可不太好。
作者: 野火    时间: 2013-2-18 10:26
没声明吧
加上 extern 声明吧
作者: 通联物网    时间: 2013-2-18 16:36
你要看一下,你的编译环境的配置中,有没有将include.h头文件包含进去,只有包含进去以后才能饮用其中定义的变量。
作者: 智能车下载    时间: 2013-2-19 00:17
比如有个模块A,分为A.h和A.C,有一个变量aV需要在B模块里(B.h和B.c)调用,那么(假设A还有一个函数是需要暴露的,比如aVxx(xxx))几个文件大致可以这么写:
A.h:
extern int aV;
extern int aVxx(xxx);

A.c:
include "a.h"
int aV = 0;
//(还有一堆外部不需要的变量,但是是模块级“全局”的,也在这声明(并初始化))
int aVxx(……)
{
    ……;  //aVxx的实现
}
这是A模块的写法,要点是,只要不是A模块需要让别的模块“知道”的,都不写在.h里面,而是只写在.c里面。

在B模块想要用aV这个变量,那么可以这么干:
B.h:
include "a.h"  //只要加这个东东,aV这个变量就是赤果果的可见滴了
B.c:
include "b.h"
   
int bX = 0;
……;
bX = aV; //现在这么做就没问题了

大致就是这样,楼上还有很有爱的灰原姐姐,你可以SM Ta 问问还。此外,还有别的搞法,但是这种对你来说应该比较简单……
(本人提供的解决思路限于本人的水平可能是不完善的,也可能是不可行的,具体还要少年你加油,本人在此免责了,出了问题谁也不许打PP)
作者: 素浪    时间: 2013-2-24 09:33
加上 extern 声明就是全局变量了,就可以了
作者: xin99    时间: 2013-2-24 19:04

作者: 大表哥    时间: 2013-11-21 21:54
怒赞7楼一个




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2