How can I define a macro (or a workaround for this) where the parameter is at the beginning of the line?
#define SINGLETON_IMPLEMENTATION(className) \ ##className* ##className::instance_ = NULL;
This give a compiler warning (GCC 3.2.3): ‘ ‘##’ cannot appear at either end of a macro expansion’
##is the concatenation operator; the compiler is just complaining about that.You cannot concatenate a token without something before it, i.e. at the beginning of the macro expansion; just try to remove the
##at the beginning of the second line.Also the second
##seems wrong. If you just want to initialize a singleton pointer, remove both##s from your macro.