Могу ли я иметь что-то подобное?Использовать значение переменной char * в макросах
#include <stdio.h>
#define CAT2(a1, a2) #a1 ## ";" ## #a2
int main(void)
{
const char *ch1 = "1";
const char *ch2 = "2";
puts(CAT2(ch1, ch2));
}
Выход:
1; 2
Но в настоящее время у меня есть
ч1; ch2
Ваше использование '##' также неверно. Этот оператор предназначен для объединения токенов в действительные другие токены, а не для строк. Если бы это было для строковых литералов, вам не обязательно их присоединять, смежные строковые литералы всегда соединяются на более поздней стадии компиляции. –