The assert C Library macro void assert(int expression); allows diagnostic information to be written to the standard error file. If the result of argument expression equal to false( which is equal to zero), a message is written to the standard error device and abort function is called which in turn terminates the program.
If expression evaluates to TRUE(non zero value), assert does nothing.
#define NDEBUGThis allows us to put debug statements during development phase and blocking all assert statement after development by defining NDEBUG macro.
Function prototype of assert
- expression : This is the expression to be evaluated. If this expression evaluates to 0, this causes an assertion failure and termination of program.
Return value of assert
NONE
C program using assert function
The following program shows the use of assert macro to print error message before program termination.
#include <stdio.h> #include <assert.h> int main(){ int numerator, denominator; float quotient; printf("Enter numerator and denominator\n"); scanf("%d %d", &numerator, &denominator); assert(denominator != 0); quotient = (float)numerator/denominator; printf("Quotient of %d/%d is %f\n", numerator, denominator, quotient); return(0); }
Output
Enter numerator and denominator 7 4 Quotient of 7/4 is 1.750000
Enter numerator and denominator 7 0 Assertion failed: denominator != 0, file C:\Programs\assert.c, line 11