我试图将变量的值传递给 C 中的宏,但我不知道这是否可行。示例:
#include <stdio.h>
#define CONCVAR(_n) x ## _n
int main () {
int x0, x1, x2, x3, x4, x5, x6, x7, x8, x9;
int i;
for (i = 0; i <= 9; i++) CONCVAR(i) = i*5;
return 0;
}
在这里,我尝试使用宏为所有 x_ 变量赋值,使用 ##
标记。我知道我可以使用数组轻松实现此目的,但这仅用于学习目的。
CONCVAR(i)
被替换为 xi
,而不是 x1
(如果 i == 1)。我知道定义和宏是如何工作的,它们都是关于替换的,但我想知道是否可以将 i 的值而不是字母 i
传递给宏。
最佳答案
将 i
的值替换到宏中是不可能的,因为宏替换发生在代码编译之前。如果您使用的是 GCC,您可以通过添加“-E”命令行参数来查看预处理器输出(但是请注意,您会看到代码中插入的所有#include。)
C 是一种静态语言,您无法在运行时决定符号名称。但是,如果您使用数组并使用下标引用元素,那么您想要实现的目标是可能的。根据经验,如果您有很多变量,例如 x0、x1 等,您可能应该使用数组之类的容器。
关于c - 将变量的值传递给 C 中的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58378450/