关于软件编译出错问题

[复制链接]
1503|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
函数参数错误.....估计是你的变量类型不对,指针对地址的类型要求非常严格的.... ...

类型对的啊,都是无符号整型
 楼主| 氕氘氚 发表于 2014-10-27 14:55 | 显示全部楼层
wangch_sh 发表于 2014-10-26 15:25
太少的函数参数

都是两个参数啊,没有多也没有少
wangch_sh 发表于 2014-10-27 16:16 | 显示全部楼层
void get_T_and_H(unsigned int *p_H,unsigned int *p_T)
指针的类型是无符号整形。
&reg[0x09],&reg[0x08]这个是不是无符号整形呢?
Rain_King 发表于 2014-10-27 16:23 | 显示全部楼层
氕氘氚 发表于 2014-10-27 14:54
类型对的啊,都是无符号整型

你确定???你可以试试get_T_and_H(reg,reg)看有木有错误.....
wuhenyouyu 发表于 2014-10-27 22:45 来自手机 | 显示全部楼层
你数组定义什么类型的?
 楼主| 氕氘氚 发表于 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] ...

是的,定义的事无符号整形数组
 楼主| 氕氘氚 发表于 2014-10-28 09:37 | 显示全部楼层
wuhenyouyu 发表于 2014-10-27 22:45
你数组定义什么类型的?

无符号整形
 楼主| 氕氘氚 发表于 2014-10-28 09:40 | 显示全部楼层
Rain_King 发表于 2014-10-27 16:23
你确定???你可以试试get_T_and_H(reg,reg)看有木有错误.....

提示是类型错误和刚刚那个问题
Rain_King 发表于 2014-10-28 09:45 | 显示全部楼层
氕氘氚 发表于 2014-10-28 09:40
提示是类型错误和刚刚那个问题

如果这样子,表示你定义的数据类型肯定出错了.......你最好把代码也贴出来.....
 楼主| 氕氘氚 发表于 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];
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

我自己测试了一下,也发现没有问题....总觉得你自己肯定哪个地方说错了...导致现在你给的东西,表明上看,根本找不出错误出来.....
 楼主| 氕氘氚 发表于 2014-10-29 10:35 | 显示全部楼层
Rain_King 发表于 2014-10-28 10:14
我自己测试了一下,也发现没有问题....总觉得你自己肯定哪个地方说错了...导致现在你给的东西,表明上看 ...

好嘛,在找人问问
yklstudent 发表于 2014-10-29 12:34 | 显示全部楼层
就这些条件,很难帮到楼主
多自己查查函数内调用的函数是否存在问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部