小编Vic*_*nin的帖子

有没有办法在另一个#define中进行#define?

我知道我正试图在腿上射击自己;)然而,它将允许我使其余(大量)代码更小,更易读.

是否有任何棘手的方法在另一个预处理器宏内部创建预处理器宏?

这是一个例子,我在寻找什么.我的真实场景更复杂

// 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)

c++ c-preprocessor

47
推荐指数
6
解决办法
3万
查看次数

C++ singleton vs完全静态对象

假设我们需要在项目中只有一个类的一个实例.有几种方法可以做到这一点.

我想比较一下.请你复习一下我的理解.

1)古典单身模式

2)完全静态类(所有方法和成员都是静态的).


据我所知,差异如下:

a)未定义跨不同单元的静态成员的初始化顺序.因此,完全静态成员初始化不能使用来自其他模块的任何静态成员/函数.而单身人士没有这个问题.

b)我们必须处理Singleton的getInstance()的线程.但是,完全静态类没有这个问题.

c)访问方法看起来有点不同.FOO ::巴(); vs Foo :: getInstance() - > bar(); 通常,singleton可以返回NULL来识别构造对象时存在一些问题而静态类不能.

d)对于静态类的一堆静态,类的定义看起来有点笨拙.

我错过了什么吗?

c++ singleton static class

34
推荐指数
3
解决办法
3万
查看次数

标签 统计

c++ ×2

c-preprocessor ×1

class ×1

singleton ×1

static ×1