只需尝试使用宏打印数字的平方即可。 自我解释的C程序:
#include <stdio.h>
#define numb(a) \
printf(#a * #a)
int main(void) {
int num;
printf("Enter a num: ");
scanf("%d",&num);
numb(num);
return 0;
}
获取错误:
main.c: In function ‘main’:
main.c:4:14: error: invalid operands to binary * (have ‘char *’ and ‘char *’)
printf(#a * #a)
^
main.c:10:14:
square(num);
~
main.c:10:4: note: in expansion of macro ‘square’
square(num);
^~~~~~
如何将char转换为int才能成功使用二进制运算符?
答案 0 :(得分:4)
您的宏需要是c代码,因此只需抛开#并为整数写格式字符串
#include <stdio.h>
#define square(a) \
printf("%d", (a) * (a))
int main(void) {
int num;
printf("Enter a num: ");
scanf("%d",&num);
square(num);
return 0;
}
答案 1 :(得分:-1)
使用“ cc -E main.c -o main.i”检查预处理器阶段的输出,并检查预处理器如何将宏转换为指令。