C 如何使用带有未知参数的“print”宏
这段代码不起作用,但当我使用print7时,它可以正常工作:C 如何使用带有未知参数的“print”宏,c,C,这段代码不起作用,但当我使用print7时,它可以正常工作: #include<stdio.h> #define print(i) printf("%"#i"c",ch); int main(void) { char ch ='*'; int N; scanf("%d",&N); if (N%2 == 0) { print(N); // print(7); } else {
#include<stdio.h>
#define print(i) printf("%"#i"c",ch);
int main(void)
{
char ch ='*';
int N;
scanf("%d",&N);
if (N%2 == 0)
{
print(N); // print(7);
}
else
{
}
}
如何使代码适用于用户插入的输入。请帮助。问题在于操作员是预处理器的一部分。它不理解运行时值
printf函数识别*语法,该语法告诉它接受指定字段宽度的int参数,而不是将宽度作为格式字符串中的常量
例如,此函数可以替换宏。请注意,我已将ch设置为参数;我认为那样更清楚
int print(int n, char ch) {
return printf("%*c", n, ch);
}
就我个人而言,我可能不会为此而费心使用函数或宏;我直接打电话给printf:
printf("%*c", n, '*');
你为什么要用宏来做这个?我喜欢尝试我的想法。这次我想为用户输入的所有数字实现一个x。我的意思是*将被用户输入的数字向右移动。您知道宏替换甚至在真正编译之前就已经发生了吗?
printf("%*c", n, '*');