断言,是一种快速有效的在调试期,检测并响应错误的机制,如果在每个接口的输入输出等位置, 加一些assert,可以提早发现程序中隐藏的bug,提高开发和调试效率。

    1. 静态断言:在编译期进行检测,一般用于类型大小、常量的检测,例如:

      1. tb_assert_static(sizeof(tb_byte_t) == 1);
      2. tb_assert_static(sizeof(tb_uint_t) == 4);
      3. tb_assert_static(sizeof(tb_uint8_t) == 1);
      4. tb_assert_static(sizeof(tb_uint16_t) == 2);
      5. tb_assert_static(sizeof(tb_uint32_t) == 4);
      6. tb_assert_static(sizeof(tb_hize_t) == 8);
    2. 仅断言:在调试模式下进行检测,仅在调试模式下有效,如果__tb_debug__没有被定义,这些代码都会被忽略

      1. tb_assert(x);
    3. 检测:在发布模式下进行检测,不管是否在调试模式,都会进行检测

      1. tb_check_return(x);
      2. tb_check_return_val(x, v);
      3. tb_check_goto(x, b);
      4. tb_check_break(x);
      5. tb_check_abort(x);
      6. tb_check_continue(x);
    4. 断言并检测:在调试和发布模式下同时进行检测

      1. tb_assert_and_check_abort(x);
      2. tb_assert_and_check_return(x);
      3. tb_assert_and_check_return_val(x, v);
      4. tb_assert_and_check_goto(x, b);
      5. tb_assert_and_check_break(x);
      6. tb_assert_and_check_continue(x);