http://kor.i2p/books/The%20C%20Programming%20Language%20by%20K&R/chapter4.html
If a parameter in the replacement text is
adjacent to a ## , the parameter is replaced by the actual argument, the ## and surrounding white space are removed, and the result is
re-scanned. For example, the macro paste concatenates its two arguments: #define paste(front, back) front ## back so paste(name, 1) creates the token name1 . The rules for nested uses of ## are arcane; further details may be
found in Appendix A .