我有一个名为 ADS_Transmit 的函数,声明如下
void ADS_Transmit(uint8_t* data, uint16_t size);
该函数应该采用 uint8_t 数组作为参数,但在某些情况下,我想在调用该函数时发送宏。像这样
#define ADS_CMD_RST 0x06U
ADS_Transmit(ADS_CMD_RST, 1); // Does not work
uint8_t data = ADS_CMD_RST;
ADS_Transmit(&data, 1); // Works
现在对于很多人来说可能显而易见的是,在参数中发送宏是行不通的,因为该函数将使用寄存器 0x06 上的内容。 但是有没有一种方法可以在不更改函数的情况下在参数中发送宏?
提前谢谢您!
最佳答案
您可以使用 compound literal :
ADS_Transmit(&(uint8_t){ADS_CMD_RST}, 1);
这将创建一个临时 uint8_t
变量,并使用值 ADS_CMD_RST
进行初始化,并将其地址传递给 ADS_Transmit
。
请注意,如果ADS_Transmit
修改第一个参数指向的内存,您将无法访问更新后的值。
关于arrays - C 将宏作为参数指针传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68415171/