Объединение строковых и символьных литералов в C
В моем коде я определяю некоторые константы компилятора, такие как следующее:
#define D_CR '\x10' // New line
#define D_LF '\x13' // New paragraph
#define D_EOS '\xFF' // End of string
(это могут быть символы, целые числа, что угодно...)
И я хочу использовать их двумя способами: один в строковом литерале, а второй - в операторах switch.
unsigned char dialogString[] =
"LOREM IMSUM" D_CR
"DOLAR SIT A MET" D_EOS;
switch (dialogString[i]) {
case D_CR: /* ... */ break;
case D_LF: /* ... */ break;
case D_EOS: /* ... */ break;
default: printf(dialogString[i]); break;
}
Проблема в том, что я смешиваю типы и получаю предупреждения компилятора.
dialogString.c(5) parse error: token -> ''\x10'' ; column 11
Есть ли способ, которым я могу заставить это работать для обоих сценариев?