以下代码来自C Puzzle书(基本类型1.1。)。我无法正常工作。
#include <stdio.h>
#define PRINT(format,x) printf("x = %format\n",x)
int integer = 5;
char character = '5';
char *string = "5";
main(){
PRINT(d,string); PRINT(d,character); PRINT(d,integer);
PRINT(s,string); PRINT(c,character); PRINT(c,integer=53);
PRINT(d, ( '5' > 5 ));
{
int sx = -9;
unsigned ux = -8;
PRINT(o,sx); PRINT(o,ux);
PRINT(o, sx>>3); PRINT(o, ux>>3 );
PRINT(d, sx>>3); PRINT(d, ux>>3 );
}
}
问题是第三行中的宏:#define PRINT(format,x) printf("x = %format\n",x)
。
答案 0 :(得分:4)
真正的问题是,任何 C预处理器是否曾经在字符串文字中进行过替换。我从没碰过。
需要使用#
进行字符串化:
#define PRINT(format,x) printf(#x " = %" #format "\n", (x))