To LUGNET HomepageTo LUGNET News HomepageTo LUGNET Guide Homepage
 Help on Searching
 
Post new message to lugnet.robotics.rcxOpen lugnet.robotics.rcx in your NNTP NewsreaderTo LUGNET News Traffic PageSign In (Members)
 Robotics / RCX / 2316
    Design by Contract (long post) —Iain McInnes
   Hi, people. The reason for the flood of posts is that I've been trying to get authenticated on LUGNET for the last week :( But as you can see, I'm authenticated now :) On to the topic of this post (sorry for such a long post): I have created an (...) (20 years ago, 8-Jan-04, to lugnet.robotics.rcx, FTX)
   
        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 (...) (20 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. (...) (20 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. (20 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 (...) (20 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 (...) (20 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, (...) (20 years ago, 8-Jan-04, to lugnet.robotics.rcx, FTX)
 

©2005 LUGNET. All rights reserved. - hosted by steinbruch.info GbR