Конкатенация строк с использованием препроцессора в C - PullRequest
3 голосов
/ 28 сентября 2011

Как объединить две строки (одна из которых хранится в переменной) в C , используя препроцессоры?

Например, как это сделать?

#define CONCAT(x,y) x y

//ecmd->argv[0] is equal to "sometext"
myfunc(CONCAT("/", ecmd->argv[0]), ecmd->argv[0]); //error: expected ')' before 'ecmd'

1 Ответ

9 голосов
/ 28 сентября 2011

Вы не можете объединить их, используя такой макрос.используя препроцессор, можно объединять только необработанные строки (строковые литералы или имена).

Вы должны использовать strcat или какой-либо другой метод для объединения строк.Например:

char * buf = malloc(strlen(ecmd->argv[0]) + 2);
buf[0] = '/'; buf[1] = '\0';
strcat(buf, ecmd->argv[0]);
...