我可以使用sprintf使用宏来连接字符串,如下所示:
#define ATTR_FORMAT "\"%s\":\"%s\""
#define ATTR_FORMAT_SET "\"%s\":[%s]"
sprintf(demoStr, "{" ATTR_FORMAT "}", "Hello", "world");
printf("demoStr=%s\n", demoStr);
我得到了正确的输出:demoStr={"Hello":"world"}
。
但是当我将宏分配给如下所示的变量时:
#define ATTR_FORMAT "\"%s\":\"%s\""
#define ATTR_FORMAT_SET "\"%s\":[%s]"
const char *fmt = NULL;
int iTest = 1;
if (iTest == 1) {
fmt = ATTR_FORMAT;
} else {
fmt = ATTR_FORMAT_SET;
}
sprintf(demoStr, "{" fmt "}", "Hello", "world");
printf("demoStr=%s\n", demoStr);
我希望输出demoStr={"Hello":"world"}
。
但是当我使用gcc编译代码时,出现以下错误:
`error: expected ')' before 'fmt'`
如何解决此问题,有人可以给我提示或显示一些代码吗?