Объединение строковых и символьных литералов в 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

Есть ли способ, которым я могу заставить это работать для обоих сценариев?

0 ответов

Другие вопросы по тегам