This question already has answers here:
Closed 2 years ago.
How to stringify an expression in C
(7个答案)
这个问题把我逼疯了出于元编程的原因,我需要将变量宏扩展为字符串。
我的代码是这样的:
所以这将打印出来:Lorem 1 ipsum 2。
问题是我需要用一个整数对一个变量求和,所以我尝试了以下操作:
以及:
但这些对我都不起作用,是不是不可能或者也许有办法。
我不能将
提前谢谢。
(7个答案)
这个问题把我逼疯了出于元编程的原因,我需要将变量宏扩展为字符串。
我的代码是这样的:
#define macro(A, B) "Lorem "#A" ipsum "#B
void main () {
printf (macro(1, 2));
}
所以这将打印出来:Lorem 1 ipsum 2。
问题是我需要用一个整数对一个变量求和,所以我尝试了以下操作:
#define macro(A, B) "Lorem "#A" ipsum "#B
void main () {
int x = 1;
printf (macro(x+1, 2));
}
以及:
#define macro(A, C, B) "Lorem "#(A+C)" ipsum "#B
void main () {
int x = 1;
printf (macro(1, x, 2));
}
但这些对我都不起作用,是不是不可能或者也许有办法。
我不能将
printf
与参数一起使用,我需要的是将宏扩展到字符串中。提前谢谢。
最佳答案
如果你想得到“Lorem 2 ipsum 2”,那么这是不可能的,至少如果不改变你的设计。
x是一个变量,x+1是一个运行时构造没有宏会对静态字符串生成运行时编号。
关于c - 带参数的字符串宏扩展。 C ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46486664/