Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何定义参数位于行首的宏(或解决方法)?
#define SINGLETON_IMPLEMENTATION(className) \ ##className* ##className::instance_ = NULL;
这会给出编译器警告(GCC 3.2.3):“'##' 不能出现在宏扩展的任一端”
您只需要## 将参数附加到另一个字符串。您的宏可以重铸为
#define SINGLETON_IMPLEMENTATION(className) \ className* className::instance_ = NULL;
##是连接运算符;编译器只是在抱怨这一点。 你不能在没有之前的东西的情况下连接一个标记,即在宏扩展的开头;只需尝试删除##第二行开头的 。 第二个##似乎也是错误的。如果您只想初始化一个单例指针,##请从宏中删除两个 s。
##