C++ "var foo = !!::bar()"语法?

标签 c++ syntax cwnd

<分区>

在寻找有关如何使用 HWND 窗口进入全屏模式的解释时,我找到了这个回复 Win32: full-screen and hiding taskbar

chromium 响应代码有这一行:

saved_window_info_.maximized = !!::IsZoomed(hwnd_);

来自这个文件https://src.chromium.org/viewvc/chrome/trunk/src/ui/views/win/fullscreen_handler.cc?revision=HEAD&view=markup在第 56 行

我读了:

var bar equal not not of mother method

这是正确的吗?

这个“!!::IsZoomed()”是什么意思?

为什么不只是

saved_window_info_.maximized = CWnd::IsZoomed(hwnd_);

?

最佳答案

!! 就是!!,两个否定。双重否定减少为 noop,但它将值转换为 bool。因此,请考虑使用 (bool) 的替代语法。它的优点是:

  1. 它在 C 中工作,在 C89 中没有单独的 bool 类型(强制值为 0 或 1)并且
  2. MSC++ 不会像为 (bool) 那样生成愚蠢的“性能警告”。

剩下的只是 ::IsZoomed,即顶级命名空间中的函数 IsZoomed

关于C++ "var foo = !!::bar()"语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43585083/

相关文章:

c++ - `std::alignment_of` 与 `alignof`

java - 无法将 double 值转换为 boolean 值(这里是菜鸟)

c - 使用函数返回值而不先存储它 - 为什么这种情况很少见?

php - 当我将我的数字指定为 .000021 时,为什么 PHP 会以科学计数法打印我的数字?

c++ - MFC CWnd 高度和宽度

c++ - 如何在 C++ 中创建大型数组(如 60 亿)?

c++ - 在 C++ 中将 HWND 包装在对象中的有效方法是什么?

c++ - MFC:如何防止子 CWnd 对话框在调整父窗口大小时跳转?

mfc - 如何将 MFC 消息重定向到另一个对象?

c++ - 什么是储存颜色的好方法?