From 754bbf7a25a8dda49b5d08ef0d0443bbf5af0e36 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Sun, 7 Apr 2024 13:41:34 -0500 Subject: new repository --- devdocs/c/error%2Fassert.html | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 devdocs/c/error%2Fassert.html (limited to 'devdocs/c/error%2Fassert.html') diff --git a/devdocs/c/error%2Fassert.html b/devdocs/c/error%2Fassert.html new file mode 100644 index 00000000..d194a1b0 --- /dev/null +++ b/devdocs/c/error%2Fassert.html @@ -0,0 +1,48 @@ +

assert

Defined in header <assert.h>
#ifdef NDEBUG
+#define assert(condition) ((void)0)
+#else
+#define assert(condition) /*implementation defined*/
+#endif
+

The definition of the macro assert depends on another macro, NDEBUG, which is not defined by the standard library.

+

If NDEBUG is defined as a macro name at the point in the source code where <assert.h> is included, then assert does nothing.

+

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 predefined variable __func__ and of(since C99) the predefined macros __FILE__ and __LINE__.

+

Parameters

+ +
condition - expression of scalar type

Return value

(none)

+

Notes

There is no standardized interface to add an additional message to assert errors. A portable way to include one is to use a comma operator:

+
assert(("There are five lights", 2 + 2 == 5));

The implementation of assert in Microsoft CRT does not conform to C99 and later revisions, because its underlying function (_wassert) takes neither __func__ nor an equivalent replacement.

+

Example

#include <stdio.h>
+// uncomment to disable assert()
+// #define NDEBUG
+#include <assert.h>
+#include <math.h>
+ 
+int main(void)
+{
+    double x = -1.0;
+    assert(x >= 0.0);
+    printf("sqrt(x) = %f\n", sqrt(x));   
+ 
+    return 0;
+}

Output:

+
output with NDEBUG not defined:
+a.out: main.cpp:10: main: Assertion `x >= 0.0' failed.
+ 
+output with NDEBUG defined:
+sqrt(x) = -nan

References

See also

+ +
causes abnormal program termination (without cleaning up)
(function)
C++ documentation for assert
+

+ © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
+ https://en.cppreference.com/w/c/error/assert +

+
-- cgit v1.2.3