人能做到这一点:C++:一种在if语句中声明一个变量(或多个变量)的方法,该变量将变量定义和测试分隔开来?
case WM_COMMAND:
if (WORD wNotifyCode = HIWORD(wparam))
{
...
}
而且可以做到这一点:
case WM_COMMAND:
{
WORD wNotifyCode = HIWORD(wparam);
if (wNotifyCode > 1) {
...
}
}
但缺一不可:
case WM_COMMAND:
if ((WORD wNotifyCode = HIWORD(wparam)) > 1)
{
...
}
使用这里声明,我认为是一种误导:
case WM_COMMAND:
for (WORD wNotifyCode = HIWORD(wparam); wNotifyCode > 1; wNotifyCode = 0)
{
...
}
因为它看起来很像一个循环正在发生 - 而且跟在我后面的可怜的笨蛋必须破译这些垃圾。
但有它结合if语句,包括局部变量声明来测试它的值为零以外的东西的能力的优雅没有语法结构?
你的第二个例子不可接受吗?我发现,无论是在范围和清晰度方面,都是最可取的。 – greyfade 2010-02-05 20:26:19
这是我要去的人。我只是想避免为此创建一个任意的额外范围,当你几乎可以在if语句中这样做时(并且肯定可以用for表达式来完成)。如此接近......但是,额外的范围现在是一个实际的解决方案。 :) – Mordachai 2010-02-05 21:19:44
据我所知,ATL/WTL有更好的(更多的OO)语法。你可能想考虑使用这些库。 – 2010-02-05 21:28:06