Os operadores # e ## do pré-processador são usados com a directiva do pré-processador #define.
Por exemplo, o comando
#define to_string( s ) # s
fará com que o compilador transforme este comando
cout << to_string( Hello World! ) << endl;
em
cout << "Hello World!" << endl;
Aqui está um exemplo do comando ## :
#define concatenate( a, b ) a ## b ... int xy = 10; ...
Este código fará com que o compilador transforme
cout << concatenate( x, y ) << endl;
em
cout << xy << endl;
que irá, claro, mostrar '10' na saída standard.
Tópicos Relacionados: #define