C语言中的Assert关键字

C语言中的Assert关键字,c,keyword,C,Keyword,除了教科书中对关键字“assert”的定义之外 实际用例是什么 它不是一个常用的关键字,因此很少能找到解释实际实现及其在代码中使用的示例您可以以任何合适的方式使用它。 就我个人而言,当我不想依赖任何依赖性时,我会用它来编写简单的单元测试 有些人使用它来检查前置和后置条件,例如: int foo(int a, int b) { int result; assert(a > 0 && a < 150); assert(b > 20 &

除了教科书中对关键字“assert”的定义之外 实际用例是什么


它不是一个常用的关键字,因此很少能找到解释实际实现及其在代码中使用的示例

您可以以任何合适的方式使用它。 就我个人而言,当我不想依赖任何依赖性时,我会用它来编写简单的单元测试

有些人使用它来检查前置和后置条件,例如:

int foo(int a, int b) {
    int result;

    assert(a > 0 && a < 150);
    assert(b > 20 && b < 1000);

    // do something with a, b and store something in result

    assert(result > -10 && result < 10);

    return result;
}
intfoo(inta,intb){
int结果;
断言(a>0&&a<150);
断言(b>20&&b<1000);
//用a、b做一些事情,并在结果中存储一些东西
断言(结果>-10&&result<10);
返回结果;
}
但请注意,通过定义
NDEBUG
宏,可以在编译时禁用断言。
因此,例如,如果您依赖它作为前置条件,您可能希望通过无条件构建的测试将它们加倍。

assert()
是一个宏,而不是一个关键字。可能重复:一个常见的用例是检查内存分配例程,例如
malloc
是否成功。可能重复@bruceg yes,一个常见的绝对不正确的用例。