C 函数中的初始值设定项无效
我不知道为什么下面的代码给出了无效的初始化错误。有什么不对劲吗C 函数中的初始值设定项无效,c,C,我不知道为什么下面的代码给出了无效的初始化错误。有什么不对劲吗 void ssd_write(uint8_t data){ uint8_t txBuffer[1] = data; <--- error i2cTransaction.slaveAddress = 0x78; i2cTransaction.writeBuf = txBuffer; i2cTransaction.writeCount = 1;
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个元素的数组并对其进行初始化。您应该知道,在这种情况下,您正在将指向数组第一个元素的衰减指针指定给writeBuf
否则,尝试将变量分配给声明的数组就是在执行无效操作
或者更简单地说,您可能想要,因为让一个数组只存储一个值是不合逻辑的——您可以,但这几乎不是我们要做的事情
uint8_t txBuffer = data;
完成此操作后,可能需要执行i2cTransaction.writeBuf=&txBuffer;如果它期望一个uint8\u t*它应该
uint8_t txBuffer[1] = {data};
您正在声明一个包含1个元素的数组并对其进行初始化。您应该知道,在这种情况下,您正在将指向数组第一个元素的衰减指针指定给writeBuf
否则,尝试将变量分配给声明的数组就是在执行无效操作
或者更简单地说,您可能想要,因为让一个数组只存储一个值是不合逻辑的——您可以,但这几乎不是我们要做的事情
uint8_t txBuffer = data;
完成此操作后,可能需要执行i2cTransaction.writeBuf=&txBuffer;如果它需要一个uint8\u t*。。。在标量方法中,然后分配i2cTransaction.writeBuf=&txBuffer,即分配txBuffer的地址,而不是分配txBuffer本身。@JohnBollinger.:编辑。二者的区别all@BenjaminBarrois.:已编辑。。。。在标量方法中,然后分配i2cTransaction.writeBuf=&txBuffer,即分配txBuffer的地址,而不是分配txBuffer本身。@JohnBollinger.:编辑。二者的区别all@BenjaminBarrois.:已编辑。