As mentioned in many of my previous questions, I'm working through K&R, and am currently into the preprocessor. One of the more interesting things -- something I never knew before from any of my prior attempts to learn C -- is the ## preprocessor operator. According to K&R:
The preprocessor operator
##provides a way to concatenate actual arguments during macro expansion. 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 macropasteconcatenates its two arguments:
#define paste(front, back) front ## backso
paste(name, 1)creates the tokenname1.
How and why would someone use this in the real world? What are practical examples of its use, and are there gotchas to consider?
UPDATE:
I accepted Brian R. Bondy's answer, but want to thank everyone who contributed -- and hopefully will contribute more in the future. Everything here was enlightening, and helped me understand this concept a bit better. I doubt I'll be using it anytime soon, but just knowing not only what it does, but that it is used -- and widely, apparently -- is tremendously helpful.
Thanks all!