【发布时间】:2011-03-27 21:32:30
【问题描述】:
今天在编写一些 Visual C++ 代码时,我遇到了一些令我惊讶的事情。似乎 C++ 支持布尔的 ++(增量),但不支持 -- (减量)。这只是一个随机决定,还是有某些原因?
这样编译:
static HMODULE hMod = NULL;
static bool once = false;
if (!once++)
hMod = LoadLibrary("xxx");
这不是:
static HMODULE hMod = NULL;
static bool once = true;
if (once--)
hMod = LoadLibrary("xxx");
【问题讨论】:
-
hm,xcode 和 gcc 编译器相同
-
是的,
++once和once++使用 gcc,但不使用递减量。 -
也许重新标记“历史”而不是“运营商关键字”,所以这与所有其他有趣的解释组合在一起,如果你考虑历史,为什么各种疯狂的事情是合理的? :)
-
注意,从 C++17 开始,
bool的预增量运算符已被弃用,souce。 -
这可以替换为
std::exchange(once,false)(注意:not atomic),如果你想要一些不被弃用的东西。