如何定义参数位于行开头的宏(或其解决方法)?
#define SINGLETON_IMPLEMENTATION(className) \ ##className* ##className::instance_ = NULL;
这给出了编译器警告(GCC 3.2.3):"'##'不能出现在宏扩展的任何一端"
您只需要##将参数附加到另一个字符串.您的宏可以重铸为
#define SINGLETON_IMPLEMENTATION(className) \ className* className::instance_ = NULL;
##
是连接运算符; 编译器只是抱怨这一点.
你不能在没有任何东西之前连接一个令牌,即在宏扩展开始时; 只是尝试删除##
第二行的开头.
第二个##
似乎也错了.如果您只想初始化单例指针,请##
从宏中删除两个s.