请问ASSERT,ASSERT_VALID宏分别有什么有

解决方案 »

  1.   

    调试用,在Debug版本里有效,Release版本把所有的断言都屏蔽了。一般我都用ASSERT^_^
      

  2.   

    假设您有一个用于自己使用的函数div(x,y),
    用于求两个数的商。
    因为您自己可以保证!=0,所以您可能会:
    int div(int x,int y)
    {
      return x/y;
    }
    但是您可能会担心在程序没有完全完成时候
    有时因为疏忽而导致y==0,
    于是,您:
    int div( int x,int y)
    {
      if(y==0) exit(1);
      return x/y;
    }
    但是在正常情况下,if一句的作用只是影响效率.有没有一种方法,可以两全其美呢?
    看:
    int div( int x,int y)
    {
      ASSERT(y!=0);
      return x/y;
    }
    如果您在DEBUG模式下,他等于
    int div( int x,int y)
    {
      if(y==0)
      {
       //...............
       }
      return x/y;
    }
    如果在Realse模式下,
    他等于:
    int div( int x,int y)
    {
      return x/y;
    }
      

  3.   

    日!如果你使用 ASSERT 那么当表达式为假时  VC 会弹出一个调试对话框,就是那个重试,放弃 。。你可以通过这个对话框直接定位到出错报告的 assert  的地方
      

  4.   

    这些在MSDN中都有的。就是调试时使用用来检查输入表达式是否为零。在Realease版本中没有任何影响