Como adicionar corretamente escapes hexadecimais em um literal de string?

Quando você tem uma string em C, pode adicionar um código hexadecimal direto.

char str[] = "abcde"; // 'a', 'b', 'c', 'd', 'e', 0x00
char str2[] = "abc\x12\x34"; // 'a', 'b', 'c', 0x12, 0x34, 0x00

Ambos os exemplos têm 6 bytes na memória. Agora o problema existe se você deseja agregar valor[a-fA-F0-9] após a entrada hexadecimal.

//I want: 'a', 'b', 'c', 0x12, 'e', 0x00
//Error, hex is too big because last e is treated as part of hex thus becoming 0x12e
char problem[] = "abc\x12e";

A solução possível é substituir após a definição.

//This will work, bad idea
char solution[6] = "abcde";
solution[3] = 0x12;

Isso pode funcionar, mas falhará, se você colocar comoconst.

//This will not work
const char solution[6] = "abcde";
solution[3] = 0x12; //Compilation error!

Como inserir corretamentee depois de\x12 sem desencadear erro?

Por que estou perguntando? Quando você quer construirUTF-8 string como constante, você deve usar valores hexadecimais de caractere se for maior que a tabela ASCII pode conter.

questionAnswers(3)

yourAnswerToTheQuestion