我正在打印一个字符串,如:
printf("Print the number thirty: 30\n");
如果我做出以下定义
#define THIRTY 30
现在
printf("Print the number thirty: THIRTY");
C 预处理器是否会替换字符串中的THIRTY --> 30
?
或者我必须去:
printf("Print then number thirty: %d", THIRTY);
答案 0 :(得分:2)
C预处理器无法理解String内部的内容,因此不会操纵字符串。
以下声明将THIRTY
替换为30
printf("Print then number thirty: %d", THIRTY);
答案 1 :(得分:2)
PreProcessor可以做到,但你必须对你的定义进行字符串化。
#define xstr(s) str(s)
#define str(s) #s
#define THIRTY 30
#define TEST "Print the number thirty: " xstr(THIRTY) "\n"
int main()
{
printf(TEST);
return 0;
}
查看THIS
答案 2 :(得分:1)
printf("Print the number thirty: THIRTY"); // it will consider is whole as a string
这只会在输出中打印Print the number thirty: THIRTY
。
你的第二个陈述 -
printf("Print then number thirty: %d", THIRTY); //you probably need this
将打印 - Print then number thirty:30
作为输出。