`

Assert

 
阅读更多
assert

void assert (int expression);

Evaluate assertion

If the argument expression of this macro with functional form compares equal to zero (i.e., the expression is false),
a message is written to the standard error device and abort is called, terminating the program execution.

The specifics of the message shown depend on the specific implementation in the compiler,
but it shall include: the expression whose assertion failed, the name of the source file,
and the line number where it happened. A usual expression format is:

Assertion failed: expression, file filename, line line number
This macro is disabled if at the moment of including assert.h a macro with the name NDEBUG has already been defined.
This allows for a coder to include many assert calls in a source code while debugging the program and then disable all of them for the production version by simply including a line like:
#define NDEBUG at the beginning of its code, before the inclusion of assert.h.

Therefore, this macro is designed to capture programming errors, not user or running errors,
since it is generally disabled after a program exits its debugging phase.


Parameters
expression
Expression to be evaluated. If this expression evaluates to 0, this causes an assertion failure that terminates the program.


Return Value
none


Example

/* assert example */
#include <stdio.h>
#include <assert.h>

void print_number(int* myInt) {
  assert (myInt!=NULL);
  printf ("%d\n",*myInt);
}

int main ()
{
  int a=10;
  int * b = NULL;
  int * c = NULL;

  b=&a;

  print_number (b);
  print_number (c);

  return 0;
}




In this example, assert is used to abort the program execution if print_number is called with a null pointer as attribute.
This happens on the second call to the function, which triggers an assertion failure to signal the bug.

{
hyp:
I tried this example in VC6.0 ,it is easy to do.

one way to compile it is by VC++ ide,
the other way is using cmd by the use of "cl" with the help of PowerCmd.It is a good utility.

but in vs2010,it is difficult to build a project to make it compile and run.
#define NDEBUG
is a utility.

}
分享到:
评论

相关推荐

    python assert的用处示例详解

    使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单。在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要...

    业务异常提示处理 springboot+Assert(自定义断言)

    本项目“业务异常提示处理 springboot+Assert(自定义断言)”着重于利用Spring Boot的特性来构建高效、易维护的业务逻辑,并通过自定义断言提升代码的可读性和可维护性。下面我们将详细探讨这些知识点。 1. **Spring...

    assert_param-转载.txt

    ### assert_param 在 STM32 中的应用 #### 一、assert_param 概述 在 STM32 开发过程中,为了确保程序的稳定性和可靠性,经常需要使用到断言(assert)来验证函数参数的有效性。`assert_param` 是一个用于参数验证...

    assert.h头文件

    assert.h头文件下载

    STM32中assert_param的使用

    STM32 assert_param使用详解 assert_param是一个宏定义,在STM32的固件库和示例程序中广泛使用。它的主要作用是检测传递给函数的参数是否是有效的参数。如果参数无效,assert_param将报告错误,使程序员可以及时...

    VC中如何使用ASSERT断言

    在Microsoft Visual C++ (VC) 开发环境中,`assert` 是一个非常重要的调试工具,它允许程序员在代码中设置检查点,确保程序在特定条件下的正确性。在本篇文章中,我们将深入探讨如何在VC中使用`assert`断言,以及它...

    C语言中用ASSERT调试的八个技巧

    在C语言中, ASSERT(断言)是一种非常有用的调试工具,它可以帮助我们检测程序中的缺陷。以下是关于C语言中使用 ASSERT 进行调试的八个技巧。 1. 理解 ASSERT 的定义:在程序的某个特定点,断言会检查一个布尔...

    systemverilog设计: assert 应用的例子(ncverilog测试过的)代码

    `assert`语句是SystemVerilog中的一个关键特性,用于在仿真期间检查程序逻辑的正确性。它允许我们在设计中插入断言,以确保特定条件在特定时刻必须为真。如果断言失败(即条件不满足),则会产生一个错误消息,帮助...

    assert在C语言中的使用

    在C语言中,assert是一种用于程序调试的宏定义,它可以帮助开发人员检查程序中某些关键条件是否满足预期,从而确保程序的正确运行。assert通常通过一个表达式作为参数,当该表达式的结果为假(即表达式的结果为0)时...

    Assert使用

    2. **使用方法**:详细介绍不同编程语言中 `Assert` 的用法,如 C++ 中的 `assert()` 函数,Java 中的 `java.util.Assert` 类,C# 中的 `System.Diagnostics.Debug.Assert()` 和 `System.Diagnostics.Trace.Assert()...

    C语言头文件 ASSERT

    C语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC语言头文件 ASSERTC...

    android用webview加载assert中的html并且可拨打页面中的电话

    在Android中,`assert`目录是一个特殊目录,用于存放应用的资源文件,这些文件不会在R类中生成引用,但可以通过`getResources().getAssets()`方法访问。加载assert目录下的HTML文件,我们可以这样做: ```java ...

    关于assert_param的疑惑

    ### 关于assert_param的理解与应用 #### 一、assert_param简介 `assert_param`是一个用于检查函数参数有效性的宏,在调试阶段特别有用。它只在`DEBUG`模式下生效,这意味着在发布版本(非调试版本)中,这些检查将...

    assert,assert_valid,verify,trace用法

    对于开始学vc的人,对于assert,assert_valid,verify,trace的宏感到很奇怪,总是觉得很难掌握似的,其实这些主要是没有理清楚他们各自宏之间深层次的意义。

    HowTo 抓取 Assert Memory dump.pdf

    展讯6531平台的Assert Memory dump是在处理器出现异常或死机情况时,用于调试和定位问题的关键技术。在展讯6531的开发和维护过程中,正确抓取和分析Memory dump对于理解系统故障的原因至关重要。以下是关于如何抓取...

    Java断言(assert)

    Java断言(assert) Java断言是一种 debugging 机制,允许开发者在Java程序中添加检查点,以确保程序的正确性。断言可以在开发和测试阶段使用,以确保程序的正确性和可靠性。 Java断言的历史 Java断言是从 JDK 1.4 ...

    Visual assert

    Visual Assert is a Visual Studio® AddIn that allows you to easily write, manage, run, and debug your C/C++ unit tests – without ever leaving the Visual Studio® IDE. No fiddling with command line ...

    深入探讨C++中的引用和ASSERT断言

    ### 深入探讨C++中的引用和ASSERT断言 #### 引用 **引用**是C++中的一项重要特性,它本质上是一个已存在的变量的别名。这意味着当我们通过引用访问一个变量时,实际上就是在直接操作那个变量。理解引用的工作原理...

    assert()宏的用法

    assert()宏是用于保证满足某个特定条件。 用法是: assert(表达式); 如果表达式的值为假,整个程序将退出,并输出一条错误信息。如果表达式的值为真则继续执行后面的语句。 使用这个宏前需要包含头文件assert.h ...

Global site tag (gtag.js) - Google Analytics