Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Det eneste assert gjør er å evaluere et utrykk, skrive ut et en feilmelding og stoppe programmet hvis utrykket er lik 0 (false).

 

assert blir typisk fjernet av kompilatoren i "release builds". Dette blir gjort ved å definere NDEBUG, noe de fleste kompilatorer gjør automatisk når du velger release (el. tilsvarende). assert blir med andre ord oftest brukt til debugging og er svært nyttig :) Bruker assert ganske hyppig selv...

Lenke til kommentar
ASSERT(3)                                                 Linux Programmer's Manual                                                 ASSERT(3)



NAME

      assert - abort the program if assertion is false



SYNOPSIS

      #include <assert.h>



      void assert(scalar expression);



DESCRIPTION

      If the macro NDEBUG was defined at the moment <assert.h> was last included, the macro assert() generates no code, and hence does noth-

      ing at all.  Otherwise, the macro assert() prints an error message to standard output and terminates the program by calling abort() if

      expression is false (i.e., compares equal to zero).



      The  purpose  of  this macro is to help the programmer find bugs in his program. The message "assertion failed in file foo.c, function

      do_bar(), line 1287" is of no help at all to a user.



RETURN VALUE

      No value is returned.



CONFORMING TO

      ISO9899 (ANSI C).  In the 1990 standard, expression is required to be of type int and undefined behavior results if it is not, but  in

      the 1999 standard it may have any scalar type.



BUGS

      assert()  is  implemented  as  a  macro;  if  the expression tested has side-effects, program behaviour will be different depending on

      whether NDEBUG is defined.  This may create Heisenbugs which go away when debugging is turned on.



SEE ALSO

      exit(3), abort(3), assert_perror(3)



C99                                                               2002-08-25                                                        ASSERT(3)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...