Я могу использовать макрос для объединения строк, используя 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'`
Как можно решить эту проблему, кто-нибудь может дать мне подсказку или показать какой-нибудь код?