注册 登录
查看: 345|回复: 20

求解 K60关于一个c文件变量被另一个c文件调用问题

[复制链接]
发表于 2014-5-16 15:31:35 | 显示全部楼层 |阅读模式
我是这样写的:
adc_collection.c
extern float g,g1,pos,pos1,angle;
extern int nLeft,nRight,nLeft1,nRight1;
void Data_acquisition()
{
   nLeft=ad_ave(ADC1,SE5a,ADC_16bit,5);
}
Data_collection.c
void Data_collection()
{
    int i,fValue,AD_mind;    float Pdirection,Ddirection;
    Data_acquisition();
    if(angle>=-1&&angle<=1||AD_mind>33560)     {Ddirection=200direction=100;}
}
这两个c文件的变量为何不能被调用,编译报错   呼叫大神
回复

使用道具 举报

发表于 2014-5-16 15:37:44 | 显示全部楼层
需要声明外部变量,才可以调用外部的变量。
回复 支持 反对

使用道具 举报

发表于 2014-5-16 15:37:52 | 显示全部楼层
需要声明外部变量,才可以调用外部的变量。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 15:39:50 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-16 15:37
需要声明外部变量,才可以调用外部的变量。

我不是声明了吗,我像下面这么声明的啊
extern float g,g1,pos,pos1,angle;
extern int nLeft,nRight,nLeft1,nRight1;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 15:40:14 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-16 15:37
需要声明外部变量,才可以调用外部的变量。

我不是声明了吗,我像下面这么声明的啊
extern float g,g1,pos,pos1,angle;
extern int nLeft,nRight,nLeft1,nRight1;
回复 支持 反对

使用道具 举报

发表于 2014-5-16 15:51:14 | 显示全部楼层
还不够 发表于 2014-5-16 15:40
我不是声明了吗,我像下面这么声明的啊
extern float g,g1,pos,pos1,angle;
extern int nLeft,nRight, ...

你是在 adc_collection.c 声明,但你需要在Data_collection.c调用,那么就得在Data_collection.c文件调用前声明!!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 17:51:01 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-16 15:51
你是在 adc_collection.c 声明,但你需要在Data_collection.c调用,那么就得在Data_collection.c文件调用 ...

我在Data_collection.c文件中声明了  报错更多   真心搞不懂了   求指教   
回复 支持 反对

使用道具 举报

发表于 2014-5-16 17:53:46 | 显示全部楼层
还不够 发表于 2014-5-16 17:51
我在Data_collection.c文件中声明了  报错更多   真心搞不懂了   求指教

模块化变成,说明你不懂。
报错原因你也不说说,没法指教。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 17:56:24 | 显示全部楼层
戈矛 发表于 2014-5-16 17:53
模块化变成,说明你不懂。
报错原因你也不说说,没法指教。

提示如下:
Error[Pe020]: identifier "g" is undefined K:\2014\电磁组\第九届飞思卡尔电磁组\2014\2014-5-16-基于LQ修改(此程序报错)\src\freescale\Data_collection\Data_collection.c 20
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 17:56:51 | 显示全部楼层
戈矛 发表于 2014-5-16 17:53
模块化变成,说明你不懂。
报错原因你也不说说,没法指教。

我是按照模块化编程来写的啊
回复 支持 反对

使用道具 举报

发表于 2014-5-16 17:57:26 | 显示全部楼层
还不够 发表于 2014-5-16 17:56
提示如下:
Error: identifier "g" is undefined K:\2014\电磁组\第九届飞思卡尔电磁组\2014\2014-5-16- ...

g 没定义,你看看定义了没有,声明了没有。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 17:58:42 | 显示全部楼层
戈矛 发表于 2014-5-16 17:57
g 没定义,你看看定义了没有,声明了没有。

声明了的   我是在adc_collection.c文件中声明的啊
声明如下:
extern float g,g1,pos,pos1,angle;
extern int nLeft,nRight,nLeft1,nRight1;
回复 支持 反对

使用道具 举报

发表于 2014-5-16 18:04:51 | 显示全部楼层
还不够 发表于 2014-5-16 17:58
声明了的   我是在adc_collection.c文件中声明的啊
声明如下:
extern float g,g1,pos,pos1,angle;
  1. Error[Pe020]: identifier "g" is undefined K:\2014\电磁组\第九届飞思卡尔电磁组\2014\2014-5-16-基于LQ修改(此程序报错)\src\freescale\Data_collection\Data_collection.c 20
问题是你是在 Data_collection.c  第20行用到啊!!!你需要在  Data_collection.c  里也声明!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 18:07:53 | 显示全部楼层
戈矛 发表于 2014-5-16 18:04
问题是你是在 Data_collection.c  第20行用到啊!!!你需要在  Data_collection.c  里也声明!!

两个地方同时声明   不会影响数据吗   声明的时候同时默认赋值为0了吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 18:19:59 | 显示全部楼层
戈矛 发表于 2014-5-16 18:04
问题是你是在 Data_collection.c  第20行用到啊!!!你需要在  Data_collection.c  里也声明!!

加好友行吗   这么回答解决不了问题   还是很多错误
回复 支持 反对

使用道具 举报

发表于 2014-5-16 18:20:29 | 显示全部楼层
还不够 发表于 2014-5-16 18:07
两个地方同时声明   不会影响数据吗   声明的时候同时默认赋值为0了吧

只允许有一个地方定义,但可以多个地方声明。
其实你对模块化编程一点都不熟悉,声明的时候都是放在头文件,用到的时候include就好了。可以看看山外哥的K60视频,里面的知识点也讲模块化编程。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 18:22:35 | 显示全部楼层
戈矛 发表于 2014-5-16 18:20
只允许有一个地方定义,但可以多个地方声明。
其实你对模块化编程一点都不熟悉,声明的时候都是放在头文 ...

我再去看看视频再上来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 18:26:07 | 显示全部楼层
戈矛 发表于 2014-5-16 18:20
只允许有一个地方定义,但可以多个地方声明。
其实你对模块化编程一点都不熟悉,声明的时候都是放在头文 ...

给我个视频链接好吗    我不知道山外哥是哪节讲的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 19:04:22 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-16 15:51
你是在 adc_collection.c 声明,但你需要在Data_collection.c调用,那么就得在Data_collection.c文件调用 ...

解决了,学习了  ,感谢了
回复 支持 反对

使用道具 举报

发表于 2014-5-16 19:08:41 | 显示全部楼层
兄弟在adc_collection.h头文件里面在声明一遍你上面提的变量和函数,就能用了,,试试吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 19:10:07 | 显示全部楼层
gsc617 发表于 2014-5-16 19:08
兄弟在adc_collection.h头文件里面在声明一遍你上面提的变量和函数,就能用了,,试试吧

正解    已经解决了   问了半天管理员也回了半天倒不如你的一句话抢沙发~给哥们顶一个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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