函数内的初始化程序无效

时间:2018-01-26 18:19:50

标签: c

我不知道为什么下面的代码会给出无效的初始化程序错误。有什么不对吗?

void ssd_write(uint8_t data){

        uint8_t txBuffer[1] = data;    <--- error

        i2cTransaction.slaveAddress = 0x78;
        i2cTransaction.writeBuf   = txBuffer;
        i2cTransaction.writeCount = 1;
        i2cTransaction.readBuf    = NULL;
        i2cTransaction.readCount  = 0;
        I2C_transfer(i2c, &i2cTransaction);
        I2C_close(i2c);

    }

1 个答案:

答案 0 :(得分:6)

应该是

uint8_t txBuffer[1] = {data};

Yoou正在声明一个包含1个元素的数组并初始化它。您应该知道,在这种情况下,您将writeBuf分配给指向数组第一个元素的衰减指针。

否则,您只是通过尝试将变量分配给声明的数组来执行无效操作。

或者更简单地说你可能想要(因为有一个数组只存储一个值是不合逻辑的 - 你可以,但这不是我们做的事情)

uint8_t txBuffer = data;

执行此操作后,如果需要i2cTransaction.writeBuf = &txBuffer;,则可能需要执行uint8_t*