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 macropasteconcatena i suoi due argomenti:
#define paste(front, back) front ## backcosì
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.