我知道我正试图在腿上射击自己;)然而,它将允许我使其余(大量)代码更小,更易读.
是否有任何棘手的方法在另一个预处理器宏内部创建预处理器宏?
这是一个例子,我在寻找什么.我的真实场景更复杂
// That's what I want to do and surely C++ doesn't like it.
#define MACROCREATER(B) #define MACRO##B B+B
void foo()
{
MACROCREATOR(5) // This should create new macro (#define MACRO5 5+5)
int a = MACRO5; // this will use new macro
}
Run Code Online (Sandbox Code Playgroud) 假设我们需要在项目中只有一个类的一个实例.有几种方法可以做到这一点.
我想比较一下.请你复习一下我的理解.
1)古典单身模式
2)完全静态类(所有方法和成员都是静态的).
据我所知,差异如下:
a)未定义跨不同单元的静态成员的初始化顺序.因此,完全静态成员初始化不能使用来自其他模块的任何静态成员/函数.而单身人士没有这个问题.
b)我们必须处理Singleton的getInstance()的线程.但是,完全静态类没有这个问题.
c)访问方法看起来有点不同.FOO ::巴(); vs Foo :: getInstance() - > bar(); 通常,singleton可以返回NULL来识别构造对象时存在一些问题而静态类不能.
d)对于静态类的一堆静态,类的定义看起来有点笨拙.
我错过了什么吗?