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