Eu sei que isso é muito tempo depois da consulta original, mas ainda pode ser útil.
Isso pode ser feito no GCC usando o operador stringify "#", mas requer dois estágios.
#define XSTR(x) STR(x)
#define STR(x) #x
O valor de uma macro pode então ser exibido com:
#pragma message "The value of ABC: " XSTR(ABC)
Veja: 3.4 Stringificação na documentação online do gcc.
Como funciona:
O pré-processador entende strings entre aspas e as trata de maneira diferente do texto normal. A concatenação de strings é um exemplo desse tratamento especial. O pragma da mensagem requer um argumento que é uma string entre aspas. Quando há mais de um componente para o argumento, todos eles devem ser strings para que a concatenação de strings possa ser aplicada. O pré-processador nunca pode assumir que uma string sem aspas deva ser tratada como se estivesse entre aspas. Se sim, então:
#define ABC 123
int n = ABC;
não compilaria.
Agora considere:
#define ABC abc
#pragma message "The value of ABC is: " ABC
que é equivalente a
#pragma message "The value of ABC is: " abc
Isso causa um aviso do pré-processador porque abc (sem aspas) não pode ser concatenado com a string anterior.
Agora considere o pré-processador stringize (que já foi chamado de stringification, os links na documentação foram alterados para refletir a terminologia revisada. (Ambos os termos, aliás, são igualmente detestáveis. O termo correto é, obviamente, stringifaction. Esteja pronto para atualizar seus links.)) operador. Isso atua apenas nos argumentos de uma macro e substitui o argumento não expandido pelo argumento entre aspas duplas. Portanto:
#define STR(x) #x
char *s1 = "abc";
char *s2 = STR(abc);
irá atribuir valores idênticos a s1 e s2. Se você executar gcc -E, poderá ver isso na saída. Talvez STR fosse melhor denominado algo como ENQUOTE.
Isso resolve o problema de colocar aspas em torno de um item não cotado, o problema agora é que, se o argumento for uma macro, a macro não será expandida. É por isso que a segunda macro é necessária. O XSTR expande seu argumento e chama STR para colocar o valor expandido entre aspas.