From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: debugging frustration Date: Mon, 14 Feb 2005 09:03:05 -0600 Message-ID: <4210BDA9.5070901@codemonkey.ws> References: <6964b3969b0cbc632c2161cb16ad0e8b@fotango.com> <200502141424.38935.maw48@cl.cam.ac.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit In-Reply-To: <200502141424.38935.maw48@cl.cam.ac.uk> Sender: xen-devel-admin@lists.sourceforge.net Errors-To: xen-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , List-Archive: To: Mark Williamson Cc: xen-devel@lists.sourceforge.net, Arthur Bergman List-Id: xen-devel@lists.xenproject.org Mark Williamson wrote: >>Also, is there a reason that not having DEBUG in turns dprintf into do >>{} while(0) instead of just turning into "" >> >> The do {} while (0) idiom is commonly used in macros to protect against the following. Say you had a macro that looked like this: #define DEBUG(a, b) if (a > debug_level) printf(b); If you called it like this: if (ptr == NULL) DEBUG(10, "Bad pointer"); else *ptr = 2; What would actually happen is that the else clause would get attached to the if from the DEBUG() statement and you would get very odd behavior. Using do {} while (0) is just the common solution to this problem. It's not the only solution, but it's what most people use. Regards, Anthony Liguori >>It makes the macro behave more like a proper statement. e.g. If we try to >>do: >> >>if ( 1 == 2 debug_print("foo!") ) >>{ >> >>} >> >>It won't compile, even if debugging is switched off. If we just did "#define >>debug_print(...)" then this would compile and we'd only notice the error when >>debugging was switched on. >> >>That's a quite contrived example but basically it keeps the developers >>honest ;-) >> >>Cheers, >>Mark >> >> >>------------------------------------------------------- >>SF email is sponsored by - The IT Product Guide >>Read honest & candid reviews on hundreds of IT Products from real users. >>Discover which products truly live up to the hype. Start reading now. >>http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click >>_______________________________________________ >>Xen-devel mailing list >>Xen-devel@lists.sourceforge.net >>https://lists.sourceforge.net/lists/listinfo/xen-devel >> >> >> -- Anthony Liguori anthony@codemonkey.ws ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click