+ -
当前位置:首页 → 问答吧 → 求助,关于C++的,跪求哪个大神给解释一下这几行代码啊?

求助,关于C++的,跪求哪个大神给解释一下这几行代码啊?

时间:2011-12-26

来源:互联网

template <bool>
struct CompileAssert {
};

#undef COMPILE_ASSERT
#define COMPILE_ASSERT(expr, msg) \
  typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]

就这几行,我们老大写的,但是我看了很久也不知所云,跪求高手指点一下吧!

作者: wubi584464304   发布时间: 2011-12-26

取消宏定义 COMPILE_ASSERT,然后在重新定义它,行末的 \ 起续行的作用

作者: mougaidong   发布时间: 2011-12-26

首先 CompileAssert是一个模板结构体,只接受bool类型。
然后定义了一个宏功能用于编译时诊断。

typedef CompileAssert<(bool(expr))> msg[bool(expr) ? 1 : -1]

判断expr的值如果是false的话就会产生编译错误
试图将CompileAssert<bool>[-1] 定义一个为msg别名。

作者: vichal   发布时间: 2011-12-26