我想知道是否可以将参数发送到#define宏以选择不同的输出

例如:

#define Row(1) LPC_GPIO0
#define Row(2) LPC_GPIO3
#define Row(3) LPC_GPIO2

然后在我的代码中创建一个用于发送参数的循环
Row(x)

最佳答案

此宏语法不存在。

此外,它不可能存在,因为在编译器编译代码之前,宏已扩展为。如果您的x不是编译时间常数,则永远不会有方法确定要在宏调用中替换源代码中的内容。

如果您需要索引一些值,只需使用一个数组,例如(假设这些常量是整数):

static int rows[] = { 0, LPC_GPIO0, LPC_GPIO3, LPC_GPIO2 };

写作
rows[x]

可能会产生无效的宏语法所带来的效果。

关于c - 将参数发送到#define,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45678353/

10-16 14:21