打印

关于软件编译出错问题

[复制链接]
1174|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
氕氘氚|  楼主 | 2014-10-23 16:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的编译出现错误提示是:Error [187] E:\102.34 too few function arguments
指向的语句是:get_T_and_H(&reg[0x09],&reg[0x08]);
而语句原型是:void get_T_and_H(unsigned int *p_H,unsigned int *p_T)


求高手讲解,错在哪里?
沙发
Rain_King| | 2014-10-26 11:54 | 只看该作者
函数参数错误.....估计是你的变量类型不对,指针对地址的类型要求非常严格的....

使用特权

评论回复
板凳
wangch_sh| | 2014-10-26 15:25 | 只看该作者
太少的函数参数

使用特权

评论回复
地板
氕氘氚|  楼主 | 2014-10-27 14:54 | 只看该作者
Rain_King 发表于 2014-10-26 11:54
函数参数错误.....估计是你的变量类型不对,指针对地址的类型要求非常严格的.... ...

类型对的啊,都是无符号整型

使用特权

评论回复
5
氕氘氚|  楼主 | 2014-10-27 14:55 | 只看该作者
wangch_sh 发表于 2014-10-26 15:25
太少的函数参数

都是两个参数啊,没有多也没有少

使用特权

评论回复
6
wangch_sh| | 2014-10-27 16:16 | 只看该作者
void get_T_and_H(unsigned int *p_H,unsigned int *p_T)
指针的类型是无符号整形。
&reg[0x09],&reg[0x08]这个是不是无符号整形呢?

使用特权

评论回复
7
Rain_King| | 2014-10-27 16:23 | 只看该作者
氕氘氚 发表于 2014-10-27 14:54
类型对的啊,都是无符号整型

你确定???你可以试试get_T_and_H(reg,reg)看有木有错误.....

使用特权

评论回复
8
wuhenyouyu| | 2014-10-27 22:45 | 只看该作者
你数组定义什么类型的?

使用特权

评论回复
9
氕氘氚|  楼主 | 2014-10-28 09:37 | 只看该作者
wangch_sh 发表于 2014-10-27 16:16
void get_T_and_H(unsigned int *p_H,unsigned int *p_T)
指针的类型是无符号整形。
&reg[0x09],&reg[0x08] ...

是的,定义的事无符号整形数组

使用特权

评论回复
10
氕氘氚|  楼主 | 2014-10-28 09:37 | 只看该作者
wuhenyouyu 发表于 2014-10-27 22:45
你数组定义什么类型的?

无符号整形

使用特权

评论回复
11
氕氘氚|  楼主 | 2014-10-28 09:40 | 只看该作者
Rain_King 发表于 2014-10-27 16:23
你确定???你可以试试get_T_and_H(reg,reg)看有木有错误.....

提示是类型错误和刚刚那个问题

使用特权

评论回复
12
Rain_King| | 2014-10-28 09:45 | 只看该作者
氕氘氚 发表于 2014-10-28 09:40
提示是类型错误和刚刚那个问题

如果这样子,表示你定义的数据类型肯定出错了.......你最好把代码也贴出来.....

使用特权

评论回复
13
氕氘氚|  楼主 | 2014-10-28 09:59 | 只看该作者
Rain_King 发表于 2014-10-28 09:45
如果这样子,表示你定义的数据类型肯定出错了.......你最好把代码也贴出来..... ...

我的程序:void get_T_and_H(unsigned int *p_H,unsigned int *p_T)
{
        union
        {
                unsigned int i;
                float f;
        }humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度
        unsigned char error,checksum;
        error=0;
        error+=s_measure((unsigned char*) &temp_val.i,&checksum,0x02);  //温度测量
        error+=s_measure((unsigned char*) &humi_val.i,&checksum,0x01);  //湿度测量
        if(error!=0) s_connectionreset(); //如果发生错误,系统复位
        else
        {
                humi_val.f=(float)(humi_val.i); //转换为浮点数
                temp_val.f=(float)(temp_val.i); //转换为浮点数
                calc_sth11(&humi_val.f,&temp_val.f); //修正相对湿度及温度
                //*p_DP=(unsigned int)(calc_dewpoint(humi_val.f,temp_val.f)*10+1000);//输出露点
                if(temp_val.f<-30) temp_val.f=-30;
                if(temp_val.f>100) temp_val.f=100;
                *p_T=(unsigned int)(temp_val.f*10+1000); //返回温度结果 0对应-100.0℃ 1即-99.9℃ 这里允许最小-30.0℃
                *p_H=(unsigned int)(humi_val.f*10); //返回湿度结果
                }
}

主函数的调用:get_T_and_H(&reg[0x08],&reg[0x09]);

定义的数组:unsigned int reg[16];

使用特权

评论回复
14
Rain_King| | 2014-10-28 10:14 | 只看该作者
氕氘氚 发表于 2014-10-28 09:59
我的程序:void get_T_and_H(unsigned int *p_H,unsigned int *p_T)
{
        union

我自己测试了一下,也发现没有问题....总觉得你自己肯定哪个地方说错了...导致现在你给的东西,表明上看,根本找不出错误出来.....

使用特权

评论回复
15
氕氘氚|  楼主 | 2014-10-29 10:35 | 只看该作者
Rain_King 发表于 2014-10-28 10:14
我自己测试了一下,也发现没有问题....总觉得你自己肯定哪个地方说错了...导致现在你给的东西,表明上看 ...

好嘛,在找人问问

使用特权

评论回复
16
yklstudent| | 2014-10-29 12:34 | 只看该作者
就这些条件,很难帮到楼主
多自己查查函数内调用的函数是否存在问题

使用特权

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

本版积分规则

5

主题

16

帖子

0

粉丝