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

    用来关闭断言

  • 相关阅读:
    洛谷—— P3353 在你窗外闪耀的星星
    洛谷—— P1238 走迷宫
    洛谷—— P1262 间谍网络
    9.8——模拟赛
    洛谷—— P1189 SEARCH
    算法
    May 22nd 2017 Week 21st Monday
    May 21st 2017 Week 21st Sunday
    May 20th 2017 Week 20th Saturday
    May 19th 2017 Week 20th Friday
  • 原文地址:https://www.cnblogs.com/qifeng1024/p/12641214.html
Copyright © 2011-2022 走看看