将变量的值传递给C中的宏
我试图将变量的值传递给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
传递给宏。
没有找到相关结果
已邀请:
3 个回复
勘掸府迫路
替秀宝
的值仅存在于运行时。宏扩展发生在编译时。
械怒等
总之,不,你不能那样做。为了能够做到这一点,那么预处理器将不得不充当解释器。 C和C ++(通常)不是解释语言,预处理器不是解释器。我的建议是要清楚地了解编译器和解释器之间(以及编译语言和解释语言之间的差异)。 问候。