共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电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
分享汽车通信和多媒体总线结构被打赏20分 | |
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
NUCLEO-U083RC学习历程38+串口通过队列的方式输出两个字符串被打赏20分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
分享电控悬架的结构与工作原理(一)被打赏20分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 |