我试图将变量的值传递给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;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我正在尝试使用宏来为所有x_变量赋值,使用##标记.我知道我可以通过数组轻松实现这一点,但这仅用于学习目的.
CONCVAR(i)被替换为xi,而不是x1(如果i == 1).我知道如何定义和宏工作,它都是关于替换,但我想知道是否有可能将i的值传递i给宏而不是字母.
yan*_*yan 13
将值替换i为宏是不可能的,因为在编译代码之前会发生宏替换.如果您正在使用GCC,则可以通过添加"-E"命令行参数来查看预处理器输出(但请注意,您将看到代码中插入了所有#include).
C是一种静态语言,您无法在运行时决定符号名称.但是,如果使用数组并使用下标引用元素,则可以实现的目标.根据经验,如果您有许多变量,如x0,x1等,您应该使用像数组一样的容器.