Interview Questions

I have some old code that tries to construct identifiers with a macro like

C Interview Questions and Answers


(Continued from previous question...)

I have some old code that tries to construct identifiers with a macro like

Q: I have some old code that tries to construct identifiers with a macro like
#define Paste(a, b) a/**/b
but it doesn't work any more.

A: It was an undocumented feature of some early preprocessor implementations (notably Reiser's) that comments disappeared entirely and could therefore be used for token pasting. ANSI affirms (as did K&R1) that comments are replaced with white space, so they cannot portably be used in a Paste() macro. However, since the need for pasting tokens was demonstrated and real, ANSI introduced a well-defined token-pasting operator, ##, which can be used like this:
#define Paste(a, b) a##b
Here is one other method you could try for pasting tokens under a pre-ANSI compiler:
#define XPaste(s) s
#define Paste(a, b) XPaste(a)b

(Continued on next question...)

Other Interview Questions