assert

来自cppreference.com
< c‎ | error

 
 
错误处理
错误代码
原文:
Error codes
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
错误代码
errno
断言
原文:
Assertions
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
assert
 
在头文件 <assert.h> 中定义
#ifdef NDEBUG

#define assert(condition) ((void)0)
#else
#define assert(condition) /*implementation defined*/

#endif
依赖于另一个宏,assert,这是没有定义的标准库中定义的宏NDEBUG.
原文:
The definition of the macro assert depends on another macro, NDEBUG, which is not defined by the standard library.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
NDEBUG<assert.h>是包括在源代码中的点定义为宏的名称,然后assert一无所有
原文:
If NDEBUG is defined as a macro name at the point in the source code where <assert.h> is included, then assert does nothing.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里
NDEBUG没有定义,然后assert检查,如果其参数(必须有标量类型)比较等于零。如果是的话,assert输出实现特定的标准错误输出的诊断信息,并调用abort()。需要的诊断信息,包括文本expression,以及价值观的标准宏__FILE____LINE__和标准的变量__func__.
原文:
If NDEBUG is not defined, then assert checks if its argument (which must have scalar type) compares equal to zero. If it does, assert outputs implementation-specific diagnostic information on the standard error output and calls abort(). The diagnostic information is required to include the text of expression, as well as the values of the standard macros __FILE__, __LINE__, and the standard variable __func__.
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

目录

[编辑] 参数

condition -
标量类型的表达
原文:
expression of scalar type
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 返回值

(无)
原文:
(none)
这段文字是通过 Google Translate 自动翻译生成的。
您可以帮助我们检查、纠正翻译中的错误。详情请点击这里

[编辑] 为例

#include <stdio.h>
#include <assert.h>
 
int main (int argc, char **argv)
{
	// Test if 0 is really equivalent to 0
	assert (0 == 0);
 
	// Test if 1 is different than 0...
	assert (1 == 0);
 
	return 0;
}

输出:

example: ex.c:10: int main(int, char**): Assertion `1 == 0' failed.
Aborted

[编辑] 另请参阅

引发非正常的程序终止(不清理)
(函数) [edit]