jtsorensen Skrevet 23. september 2003 Del Skrevet 23. september 2003 Jeg lurer litt på hva assert(..) egentlig gjør....? Lenke til kommentar
kjetil7 Skrevet 24. september 2003 Del Skrevet 24. september 2003 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
jtsorensen Skrevet 24. september 2003 Forfatter Del Skrevet 24. september 2003 Kan du gi et veldig enkelt eksempel for å vise hvordan den skal brukes? Lenke til kommentar
gspr Skrevet 25. september 2003 Del Skrevet 25. september 2003 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
kjetil7 Skrevet 25. september 2003 Del Skrevet 25. september 2003 I C++ kan du bruke assert slik: #include <cassert> #include <locale> int CollateNoCase(const char* left_, const char* right_, size_t count_, const std::locale& loc_ = std::locale::classic() ) { assert(left_ && right_); // implementasjon.... // ... return 0; } Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå