Come accennato in molte delle mie domande precedenti, sto lavorando tramite K&R e attualmente sono nel preprocessore. Una delle cose più interessanti - qualcosa che non avevo mai saputo prima da nessuno dei miei precedenti tentativi di imparare il C - è l' ##
operatore del preprocessore. Secondo K&R:
L'operatore del preprocessore
##
fornisce un modo per concatenare gli argomenti effettivi durante l'espansione della macro. Se un parametro nel testo sostitutivo è adiacente a##
, il parametro viene sostituito dall'argomento effettivo, lo##
spazio bianco circostante viene rimosso e il risultato viene nuovamente scansionato. Ad esempio, la macropaste
concatena i suoi due argomenti:
#define paste(front, back) front ## back
così
paste(name, 1)
crea il tokenname1
.
Come e perché qualcuno dovrebbe usarlo nel mondo reale? Quali sono esempi pratici del suo utilizzo e ci sono trucchi da considerare?
std::wstring BuildDate = WIDEN(__DATE__) L" " WIDEN(__TIME__);
e creare implicitamente l'intera stringa contemporaneamente.