共2条
1/1 1 跳转至页
问
我的ICC里分几个文件存放,不同的功能模块在不同的文件.
我如何使一个变量在各个文件的子程序都能访问? 如何声明全局变量 ?
有些变量我想出了这个模块就不用了,是不是在该文件开头处声明就可以了?
除了用全局变量,还有办法在不同文件的程序间传递参数吗 ?
如何定义LONG 类型的变量,可以使其存在与Rx等寄存器,而不是在DATA区 ?并且使用又如何释放呢...
请各位大侠指点! 答 1: 呵呵全局变量在不同模块中实现调用可以用extern声明一下;实现函数间的参数传递的另外的好办法就是用形参,最好是指针类型的,这样有一个好处就是不会象全局变量占用系统资源而不释放。第三个问题没有试过,但是可不可以用结构题的方法来解决呢?
答 2: 这样吧。本模块用的,出了本模块就无效的变量,在本模块开头作如下申明:
STATIC UCHAR DATA VARIABLE1;
这个只是示例,具体的变量类型,存储类型按你的要求,static是主要的。
至于你所说的所有模块可享用的变量,可以做个头文件(*.H),将所有的系统全局变量申明下就是了,extern uchar data variable1;但在定义这个变量的模块中,要完整定义,即,你在模块1中使用variable1,你除了加入头文件外,还要在程序开头定义variable1,uchar data variable1;否则会出错的。还用问嘛,头文件指示编译器在外部找这个变量的定义,都在外部找,总得有个模块定义啊,hehe。
你的最后一个问题,诚如amoy所说,可以用结构体来实现。但程序设计要求有点小高阿,自己找本书来看吧,说起来繁,我也不是很清楚阿,^_^。
就这样了吧,希望有所帮到你。hehe
答 3: 非常感谢两位热心人!通过定义.h 文件以及声明变量为extern已经解决不能编译问题,但是调用到其他文件里的函数是外的时候,编译仍然提示"调用一个未定义参数的函数可能会引起未知错误"之类的提示.但不影响使用.同时发现ICC非常不稳定,偶尔会不提示错误,当然这时候根本没有进行编译!
还有就是不同文件里的函数之间好像不能互相调用 !? 我一调用就出错...现在不在家,回去看再贴出来. 答 4: 错误提示是这样的...每当调用一个非本文件中的函数就会有这样的错误提示:
:[warning] calling function without prototype may cause errors
但是不影响编译.
还有,有时候改代码的时候没擦干净,剩下一些杂七杂八的字符(连结束的;都没有),ICCAVR 居然也可以编译通过,我真是服了!
答 5: to:cctv这个警告可以不理!
我如何使一个变量在各个文件的子程序都能访问? 如何声明全局变量 ?
有些变量我想出了这个模块就不用了,是不是在该文件开头处声明就可以了?
除了用全局变量,还有办法在不同文件的程序间传递参数吗 ?
如何定义LONG 类型的变量,可以使其存在与Rx等寄存器,而不是在DATA区 ?并且使用又如何释放呢...
请各位大侠指点! 答 1: 呵呵全局变量在不同模块中实现调用可以用extern声明一下;实现函数间的参数传递的另外的好办法就是用形参,最好是指针类型的,这样有一个好处就是不会象全局变量占用系统资源而不释放。第三个问题没有试过,但是可不可以用结构题的方法来解决呢?
答 2: 这样吧。本模块用的,出了本模块就无效的变量,在本模块开头作如下申明:
STATIC UCHAR DATA VARIABLE1;
这个只是示例,具体的变量类型,存储类型按你的要求,static是主要的。
至于你所说的所有模块可享用的变量,可以做个头文件(*.H),将所有的系统全局变量申明下就是了,extern uchar data variable1;但在定义这个变量的模块中,要完整定义,即,你在模块1中使用variable1,你除了加入头文件外,还要在程序开头定义variable1,uchar data variable1;否则会出错的。还用问嘛,头文件指示编译器在外部找这个变量的定义,都在外部找,总得有个模块定义啊,hehe。
你的最后一个问题,诚如amoy所说,可以用结构体来实现。但程序设计要求有点小高阿,自己找本书来看吧,说起来繁,我也不是很清楚阿,^_^。
就这样了吧,希望有所帮到你。hehe
答 3: 非常感谢两位热心人!通过定义.h 文件以及声明变量为extern已经解决不能编译问题,但是调用到其他文件里的函数是外的时候,编译仍然提示"调用一个未定义参数的函数可能会引起未知错误"之类的提示.但不影响使用.同时发现ICC非常不稳定,偶尔会不提示错误,当然这时候根本没有进行编译!
还有就是不同文件里的函数之间好像不能互相调用 !? 我一调用就出错...现在不在家,回去看再贴出来. 答 4: 错误提示是这样的...每当调用一个非本文件中的函数就会有这样的错误提示:
:[warning] calling function without prototype may cause errors
但是不影响编译.
还有,有时候改代码的时候没擦干净,剩下一些杂七杂八的字符(连结束的;都没有),ICCAVR 居然也可以编译通过,我真是服了!
答 5: to:cctv这个警告可以不理!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |