When your C++ source file is being compiled, one of the first things that happens is your compiler uses its preprocessor to "tokenize" your program.
Tokenization would process code like
iA+++iB by splitting it into four tokens (variable identifier
iA, then operator
++, then operator
+, then variable identifier
A preprocessor macro is able to use
## within its definition, to construct a compilation-token while the macro expands.