代码之家  ›  专栏  ›  技术社区  ›  Martin Ba

谁在使用MFC的VERIFY宏?

  •  3
  • Martin Ba  · 技术社区  · 15 年前

    想想。。。多年来,我一直很高兴地在一个充斥着MFC的环境中编程,在一切正常的时候都使用ASSERT(),就在今天,我偶然发现了VERIFY宏: http://msdn.microsoft.com/en-us/library/fcatwy09%28v=VS.71%29.aspx

    它基本上与ASSERT()相同,只是在发布版本中不会删除表达式(默认值) 威尔,但是 表达

    #ifdef _DEBUG
    #define VERIFY(f)          ASSERT(f)
    #else   // _DEBUG
    #define VERIFY(f)          ((void)(f))
    

    我可以看到它的一些用途,但我想知道其他人是否经常在他们的代码库中使用它,以及是否有人看到过使用它的任何不良副作用。

    干杯。

    3 回复  |  直到 15 年前
        1
  •  3
  •   Will Dean    15 年前

    当我以前做MFC编程时,我一直在用它。

    基本上所有返回的东西,我通常懒得检查返回,但皮棉然后抱怨你,我会包在一个验证(调用,例如::CloseHandle)

    在已发布的产品中使用它不会有任何不良副作用,因为它对发布版本无论如何都是不起作用的。

        2
  •  2
  •   MSalters    14 年前

    在我15年前的第一次编程工作中,我设法大大加快了现有项目的速度。他们有很多钱 ASSERT 断言 VERIFY s。

        3
  •  1
  •   Community CDub    8 年前

    假设你有这样的代码:

      ...
      const int optional_return_value = AnyOldFunctionOrMethod(params);
      ASSERT(optional_return_value == 42);
    }
    

    warning C4189: 'optional_return_value' : local variable is initialized but not referenced 在发布版本中。

    VERIFY宏可以通过对VERIFY宏中的一行执行函数调用+检查(如 Will suggested in his answer )或者在检查行中使用VERIFY而不是ASSERT。