-
-
Notifications
You must be signed in to change notification settings - Fork 723
断言与检测
ruki edited this page Dec 21, 2015
·
2 revisions
断言,是一种快速有效的在调试期,检测并响应错误的机制,如果在每个接口的输入输出等位置, 加一些assert,可以提早发现程序中隐藏的bug,提高开发和调试效率。
-
静态断言:在编译期进行检测,一般用于类型大小、常量的检测,例如:
tb_assert_static(sizeof(tb_byte_t) == 1); tb_assert_static(sizeof(tb_uint_t) == 4); tb_assert_static(sizeof(tb_uint8_t) == 1); tb_assert_static(sizeof(tb_uint16_t) == 2); tb_assert_static(sizeof(tb_uint32_t) == 4); tb_assert_static(sizeof(tb_hize_t) == 8);
-
仅断言:在调试模式下进行检测,仅在调试模式下有效,如果__tb_debug__没有被定义,这些代码都会被忽略
tb_assert(x);
-
检测:在发布模式下进行检测,不管是否在调试模式,都会进行检测
tb_check_return(x); tb_check_return_val(x, v); tb_check_goto(x, b); tb_check_break(x); tb_check_abort(x); tb_check_continue(x);
-
断言并检测:在调试和发布模式下同时进行检测
tb_assert_and_check_abort(x); tb_assert_and_check_return(x); tb_assert_and_check_return_val(x, v); tb_assert_and_check_goto(x, b); tb_assert_and_check_break(x); tb_assert_and_check_continue(x);