The Purpose of ((void)0) in C++ Assert Macros
The assert macro in C++ is defined conditionally based on the presence of the NDEBUG macro. In release builds, where NDEBUG is defined, it expands to ((void)0).
#ifdef NDEBUG
#define assert(condition) ((void)0)
#else
// Debug-mode implementation
#endif
The expressino ((void)0) involves an explicit cast of the integer literal 0 to the v ...
Posted on Wed, 24 Jun 2026 16:35:40 +0000 by Whear
Understanding the C Preprocessor: Macros, Conditional Compilation, and File Inclusion
Predefined tokens
__FILE__ // current source filename
__LINE__ // current line number
__DATE__ // compilation date "Mmm dd yyyy"
__TIME__ // compilation time "hh:mm:ss"
__STDC__ // 1 if the compiler conforms to ISO C
Simple textual substitution
#define forever for (;;)
#define CASE break; case
#define reg r ...
Posted on Wed, 13 May 2026 05:48:26 +0000 by dancing dragon