打印
[开发工具]

请教,文件编译提示错误

[复制链接]
1848|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shuidi_wangdan|  楼主 | 2013-7-18 14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我自己做了一个多文件的工程(自己第一次这样做工程),遇到了一个问题编译通不过,我上传了文件,我在主函数调用其他文件的函数提示语法错误,请老师指点!! JD2013.rar (13.03 KB)
沙发
shuidi_wangdan|  楼主 | 2013-7-18 15:15 | 只看该作者
我错了,编译的时候,。没有注意到被调用函数中的void,去掉就好了,打扰大家了!谢谢!

使用特权

评论回复
板凳
yewuyi| | 2013-7-18 18:00 | 只看该作者
声明和调用格式不符?

使用特权

评论回复
地板
shuidi_wangdan|  楼主 | 2013-7-19 08:05 | 只看该作者
yewuyi 发表于 2013-7-18 18:00
声明和调用格式不符?

调用函数的时候,函数括号里的void没有去掉,太低级的错误了。
我想请教您一个问题,一个工程中有多个文件,我写了了一个延时文件,延时函数只有一个框架,如下:
#include"delay_pic.h"
/*************************************/
/*              微秒级延时函数       */
/*************************************/
void delay_us(void)
{

}
/*************************************/
/*              毫微秒级延时函数     */
/*************************************/
void delay_ms(void)
{

}
这样可以编译通过,如果改成带有形参的函数,如下:
#include"delay_pic.h"

/*************************************/
/*              微秒级延时函数       */
/*************************************/
void delay_us(unsigned char us)
{

}
/*************************************/
/*              毫微秒级延时函数     */
/*************************************/
void delay_ms(unsigned char ms)
{

}
声明和定义格式一样,
但是编译提示错误,提示语法错误,您可以给指点一下吗?

使用特权

评论回复
5
yewuyi| | 2013-7-19 08:24 | 只看该作者
1、提示的应该是警告,而不应该是错误。
2、提示警告的原因是us,ms这两个变量因为在函数根本没用,提示你他们属于无效变量。
3、如果你确定警告不会对你的代码运行造成危害,警告是可以忽略的,编译后是可以生成HEX文件的,但提示错误时,则编译器一般是不能生成HEX文件的。

使用特权

评论回复
6
shuidi_wangdan|  楼主 | 2013-7-19 12:12 | 只看该作者
yewuyi 发表于 2013-7-19 08:24
1、提示的应该是警告,而不应该是错误。
2、提示警告的原因是us,ms这两个变量因为在函数根本没用,提示你他 ...

老师思路很条理很清晰,向你学习。只是提示语法错误,等PCB发回来调试一下吧,谢谢老师!

使用特权

评论回复
7
shuidi_wangdan|  楼主 | 2013-7-19 16:00 | 只看该作者
本帖最后由 shuidi_wangdan 于 2013-7-19 16:37 编辑
yewuyi 发表于 2013-7-19 08:24
1、提示的应该是警告,而不应该是错误。
2、提示警告的原因是us,ms这两个变量因为在函数根本没用,提示你他 ...

老师,我把多个文件头文件放在一起编译,出现错误,多个文件一起编译有什么技巧吗

使用特权

评论回复
8
yewuyi| | 2013-7-20 23:13 | 只看该作者
多文件编译的前提就是要保证不能出现重复定义。

使用特权

评论回复
9
shuidi_wangdan|  楼主 | 2013-7-23 13:58 | 只看该作者
yewuyi 发表于 2013-7-20 23:13
多文件编译的前提就是要保证不能出现重复定义。

老师,我用
typedef unsigned char uchar;
typedef unsigned int  uint;
并且用到的地方都调用这两句所在的头文件,为什么还提示语法错误?
我感觉好像不是全局定义,只是局部定义,怎样才能通知全局定义?请老师指点!!

使用特权

评论回复
10
yewuyi| | 2013-7-23 15:51 | 只看该作者
请搞清楚定义、声明、字符替代等相关的基本知识,自己可以查阅相关的C语言书籍。

使用特权

评论回复
11
mg坏坏| | 2013-7-24 00:10 | 只看该作者
长见识了 大神啊

使用特权

评论回复
12
shuidi_wangdan|  楼主 | 2013-7-24 08:07 | 只看该作者
yewuyi 发表于 2013-7-23 15:51
请搞清楚定义、声明、字符替代等相关的基本知识,自己可以查阅相关的C语言书籍。 ...

这个头文件放在main.c文件里调用uchar,uint都没有问题,但把它放到别的文件里就出错误了。感觉有点想不通为什么。

使用特权

评论回复
13
xiaoqingbin616| | 2013-7-28 11:57 | 只看该作者
学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:奇葩满天下,不分你我他! 奋斗!https://bbs.21ic.com/static/image/smiley/chubby/17.gif[/url]

65

主题

549

帖子

3

粉丝