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 macropasteconcatena seus dois argumentos:
#define paste(front, back) front ## backentã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.