我不知道为什么下面的代码给出了无效的初始化器错误出什么事了吗?

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);

    }

最佳答案

应该是

uint8_t txBuffer[1] = {data};

你正在声明一个由1个元素组成的数组并初始化它您应该知道,在这种情况下,您将指定给指向数组第一个元素的衰减指针。
否则,您只需尝试将变量分配给声明的数组,从而执行无效操作。
或者更简单地说,你可能想要(因为有一个数组只存储一个值是不合逻辑的——你可以,但这不是我们要做的事情)
uint8_t txBuffer = data;

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

10-04 22:00