Конкатенация строкового литерала с символьным литералом

Я хочу объединить строковый литерал и символьный литерал. Быть синтаксически некорректным,"abc" 'd' "efg" отображает ошибку компилятора:

x.c: 4: 24: ошибка: ожидается ',' или ';' до "д"

К настоящему времени я должен использовать snprift (без необходимости), несмотря на то, что значение строкового литерала и символьного литерала известны во время компиляции.

Я пытался

#define CONCAT(S,C) ({ \
    static const char *_r = { (S), (C) }; \
    _r; \
})

но это не работает, потому что нулевой терминаторS не раздетый (Помимо выдачи предупреждений компилятора.)

Есть ли способ написать макрос для использования

"abc" MACRO('d') "efg" или жеMACRO1(MACRO2("abc", 'd'), "efg") или жеMACRO("abc", 'd', "efg") ?

В случае, если кто-то спросит, почему я этого хочу: символьный литерал приходит из библиотеки, и мне нужно распечатать строку в виде сообщения о состоянии.

Ответы на вопрос(4)

Ваш ответ на вопрос