2013-03-25 2 views
0

Я хочу Concat несколько строк в с помощью макроса, что я сделал это:, что это лучший способ Concat несколько строк в C

#define PROCESS_NAME   "process_a" 

#ifdef WITH_PID_FILE 
#define PROCESS_PID   "-p /tmp/process_a.pid" 
#else 
#define PROCESS_PID   "" 
#endif 

#define PROCESS_CMD   PROCESS_NAME" -i %s -a %s "PROCESS_PID" &" 

, но это выглядит действительно ужасно, есть ли лучший способ?

моя цель состоит в том, чтобы использовать PROCESS_CMD в snprintf и выполнить системный вызов

+0

Это производит '' process_a "" -i% s -a% s "" -p /tmp/process_a.pid "" & "'. Действительно ли вам нужны '' 'знаки? – Dipto

+0

@Dipto: После того, как препроцессор объединяет смежные строковые литералы, это становится' 'process_a -i% s -a% s -p /tmp/process_a.pid &' 'Кажется правильным мне , –

ответ

0

Если содержимое macros являются фиксированными и не изменятся, и вы будете использовать их в нескольких местах, то это хорошо.
Однако использование макроса в snprintf может сделать команду менее читаемой и менее очевидной на первый взгляд.

Посмотрите here об использовании макросов.