zoukankan      html  css  js  c++  java
  • 断言

    惯例引入头文件

    #include <assert.h>

    看一个例子

    int main(int argc, char const *argv[])
    {
        int i (1);
        int b = i + i;
        assert(b != 2);
    }

    这是一个 1+1 的问题。。显然 b 等于 2

    我加上这样一句话,就表示我代码到这里b一定不可以等于2,如果等于2了就返回一个错误信息

    Untitled-1: Untitled-1.cpp:22: int main(int, const char**): Assertion `b != 2' failed.

    看看静态断言

    int main(int argc, char const *argv[])
    {
        int i (1);
        int b = i + i;
       
        static_assert(sizeof(b)!=sizeof(i),"data type different");
    }

    两个参数,第一个参数是判断,第二个参数是提示信息

    静态断言的好处是在编译的时刻就可以检查到断言的结果

    Untitled-1.cpp: In function ‘int main(int, const char**)’:
    Untitled-1.cpp:23:5: error: static assertion failed: data type different
         static_assert(sizeof(b)!=sizeof(i),"data type different");

    这里的报错就是我们之前设定好的

    使用静态断言要注意,第一个参数必须是常量表达式,如果我在上面例子中写入 b != 2 就是使用错误

    可以在文件中加入

    #define NDEBUG

    用来关闭断言

  • 相关阅读:
    python-Lock进程同步解决互斥
    python-Event事件处理进程同步
    python-queue队列通信
    python-无名管道进程通信
    python-signal
    python-购物车
    python-多进程类封装
    python-哈夫曼树
    python-双向链表
    openstack 开发step-by-step
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12641214.html
Copyright © 2011-2022 走看看