c - 将参数发送给#define

标签 c c-preprocessor directive preprocessor-directive

我想知道是否可以将参数发送到 #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/

相关文章:

c - fgets 跳过空行

c - 什么是异步套接字?

c - 标准 C 预处理器如何解释 "0xFFFFFFFF"?

c - 该宏在什么情况下会导致错误?

javascript - 2 路数据绑定(bind)指令 Angular

python - 用 Python 封装 C++ 库来调用 Python C API

c - 格式指定类型 'char *' 但参数的类型为 'int' ,我在这里犯了什么错误?

c++ - C/C++,你能#include一个文件到一个字符串文字中吗?

Angularjs:为什么在模板中绑定(bind)时自定义指令中的参数没有定义?

javascript - 组件的 Angular 2 指令覆盖 ng-content?