| | Re: Design by Contract (long post) Ross Crawford
|
| | (...) Hi Iain! (...) Cool! (...) I have a question about this: If NDEBUG is defined, shouldn't it still execute x? That is, shouldn't the code in assert.h (or wherever) be: #ifdef NDEBUG #define assert(x) (x) #else #define assert(x) if (x) else (...) (21 years ago, 8-Jan-04, to lugnet.robotics.rcx, FTX)
|
| | |
| | | | Re: Design by Contract (long post) Tim McSweeney
|
| | | | (...) <delurk> The first definition of assert is the correct, standard definition. However there is a slight boo boo in the original post in the line: assert (myptr = malloc (sizeof (mystruct)); Which will delete the malloc when NDEBUG is defined. (...) (21 years ago, 8-Jan-04, to lugnet.robotics.rcx, FTX)
|
| | | | |
| | | | | | Re: Design by Contract (long post) Iain McInnes
|
| | | | | (...) D'oH! Thanks, Tim. I was very careful composing the original post, but added the example in as an after thought - Well spotted. Iain. (21 years ago, 8-Jan-04, to lugnet.robotics.rcx, FTX)
|
| | | | | |
| | | | | | | Re: Design by Contract (long post) Tim McSweeney
|
| | | | | (...) For more fun with asserts: See if your compiler supports the FILE and LINE macros (or something equivilant). #ifdef NDEBUG #define assert(x) ((void)0) #else #define assert(x) if (x) else assertfail(FILE,LINE); #endif your assert_fail function (...) (21 years ago, 9-Jan-04, to lugnet.robotics.rcx, FTX)
|
| | | | | |
| | | | | | | Re: Design by Contract (long post) Iain McInnes
|
| | | | | Thanks, Tim. I haven't used the #x idiom myself - I like it. Your implementation with the boolean: (...) Will need an extra level of parenthesis surrounding the bool so that its declaration scope is made local. You can certainly go to town with this (...) (21 years ago, 10-Jan-04, to lugnet.robotics.rcx, FTX)
|
| | | | | |
| | | | Re: Design by Contract (long post) Iain McInnes
|
| | | | (...) I agree it seems to be the wrong way round. That's the standard implementation. NDEBUG seems to stand for "No debug". One advantage of making it negative, is that you get the assert()s if you don't do anything (ie dont define NDEBUG). BTW, (...) (21 years ago, 8-Jan-04, to lugnet.robotics.rcx, FTX)
|
| | | | |