Concatenate literal de string com char literal
Quero concat uma string literal e char literal. Sendo sintaticamente incorreto,"abc" 'd' "efg"
gera um erro do compilador:
x.c: 4: 24: erro: esperado ',' ou ';' antes de 'd'
Agora, eu tenho que usar snprift (desnecessariamente), apesar do valor da string literal e do char literal serem conhecidos em tempo de compilaçã
Eu tente
#define CONCAT(S,C) ({ \
static const char *_r = { (S), (C) }; \
_r; \
})
mas não funciona porque o terminador nulo deS
não é retirado. (Além de fornecer avisos ao compilador.)
Existe uma maneira de escrever uma macro para usar
"abc" MACRO('d') "efg"
ouMACRO1(MACRO2("abc", 'd'), "efg")
ouMACRO("abc", 'd', "efg")
?No caso de alguém perguntar por que eu quero isso: o literal char é de uma biblioteca e preciso imprimir a string como uma mensagem de statu