Como mencionado em muitas das minhas perguntas anteriores, estou trabalhando com K&R e atualmente estou no pré-processador. Uma das coisas mais interessantes - algo que eu nunca soube antes de qualquer uma de minhas tentativas anteriores de aprender C - é o ##
operador de pré - processador. De acordo com K&R:
O operador pré-processador
##
fornece uma maneira de concatenar os argumentos reais durante a expansão da macro. Se um parâmetro no texto de substituição for adjacente a a##
, o parâmetro será substituído pelo argumento real, o##
e o espaço em branco ao redor serão removidos e o resultado será verificado novamente. Por exemplo, a macropaste
concatena seus dois argumentos:
#define paste(front, back) front ## back
então
paste(name, 1)
cria o tokenname1
.
Como e por que alguém usaria isso no mundo real? Quais são os exemplos práticos de seu uso e há algumas dicas a serem consideradas?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);
e criar implicitamente a string inteira de uma vez.