arrays - C 将宏作为参数指针传递

标签 arrays c macros

我有一个名为 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

现在对于很多人来说可能显而易见的是,在参数中发送宏是行不通的,因为该函数将使用寄存器 0x​​06 上的内容。 但是有没有一种方法可以在不更改函数的情况下在参数中发送宏?

提前谢谢您!

最佳答案

您可以使用 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/

相关文章:

javascript - 从数组中删除重复值

python - 在 Linux 中使用 system() 调用从 C 调用 Python

java - Scala 宏找不到 java.util.List、java.lang.Object

python - 打印下一个 N 个质数

javascript - JS计算数组中的出现次数并按最高排序

c - 将 37.1-28.75 浮点计算正确舍入为 8.4 而不是 8.3

c - 文本文件到排序的二进制文件,C 语言

c - 计时的宏观问题

c++ - noexcept 关键字和 _NOEXCEPT 宏有什么区别?

php - 使用单个变量查找表行,其中表列是数组