hrbwangning 发表于 2018-4-30 15:33:30

函数中数组调用问题

下面的函数在main里怎么调用呀。是FIFO_Read(0x07,Word_Data[],0x20);吗?总是出错..\USER\main.c(72): error:#29: expected an expression

void FIFO_Read(u8 Register_Address,u16Word_Data[],u8 count)
{
        u8 i=0;
        u8 no = count;
        u8 data1, data2;
        i2c_Start();
        i2c_SendByte(WR_address | I2C_WR);       

        if (i2c_WaitAck() != 0)
        {
                goto cmd_fail;        /* EEPROMÆ÷¼þÎÞÓ¦´ð */
        }


        i2c_SendByte((uint8_t)Register_Address);
        if (i2c_WaitAck() != 0)
        {
                goto cmd_fail;       
        }
       

        i2c_Start();

       
        i2c_SendByte(WR_address | I2C_RD);


        if (i2c_WaitAck() != 0)
        {
                goto cmd_fail;       
        }


        while (no)
        {
                data1 = i2c_ReadByte();       
                i2c_Ack();
                data2 = i2c_ReadByte();
                i2c_Ack();
                Word_Data = (((u16)data1 << 8) | data2);//

               
                data1 = i2c_ReadByte();       
                i2c_Ack();
                data2 = i2c_ReadByte();
                if(1==no)
                        i2c_NAck();       
                else
                        i2c_Ack();
                Word_Data = (((u16)data1 << 8) | data2);

                no--;       
                i++;
        }

        i2c_Stop();

cmd_fail:

        i2c_Stop();
}

与龙共舞 发表于 2018-4-30 19:46:04

void FIFO_Read(u8 Register_Address,u16Word_Data[],u8 count)
FIFO_Read(0x07,Word_Data[],0x20)
看下来中间的参数有点问题吧。
二维数组呢 显然不能用数组名字了
定义u16 Word_Data了么?试试如下调用
FIFO_Read(0x07,&Word_Data,0x20)

其实还有另外一种修改方法,上面是修改调用,下面就是修改实现。
试试这个
void FIFO_Read(u8 Register_Address,u16 (* Word_Data),u8 count)

toofree 发表于 2018-4-30 23:23:05

本帖最后由 toofree 于 2018-4-30 23:27 编辑

表达式错误。
调用时要传指针吧。
你写个FIFO_Read(0x07,Word_Data[],0x20);,表达式不对呀,Word_Data[]这能这么写,即便写成Word_Data也只是其它一个元素,是不是应该写成FIFO_Read(0x07,Word_Data,0x20); 一把传进去。



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void fun(int x[])
{
    int i, j;

    for (i = 0; i < 2; i++)
    {
      for (j = 0; j < 3; j++)
      {
            printf("%d ", x);
      }
      printf("\n");
    }
}

int main()
{
    int a = {1, 2, 3, 4, 5, 6};

    fun(a);

    return 0;
}

hrbwangning 发表于 2018-4-30 23:52:03

与龙共舞 发表于 2018-4-30 19:46
void FIFO_Read(u8 Register_Address,u16Word_Data[],u8 count)
FIFO_Read(0x07,Word_Data[],0x20) ...

谢谢,暂时不试了,着急做项目,我把数组的形参去掉了,函数内部做2个循环往数组里写,已经可以了

pythonworld 发表于 2018-5-1 06:02:32

参数好复杂,把自己整晕了。
页: [1]
查看完整版本: 函数中数组调用问题