C++ Logo


Advanced search

[std-proposals] assert functionality on non-debug builds

From: Florian Gavril <gv.florian_at_[hidden]>
Date: Wed, 17 Aug 2022 17:52:07 +0300

As everyone knows that, the assert macro is very useful to find out
unexpected conditions on the development stage, but for the production
builds, the NDEBUG is usually enabled and assert is actually disabled. If
assert is used, for example, in a function, to check if one of the
parameters is not NULL, the program execution is terminated and some
messages are displayed. But if NDEBUG is defined, the program will silently
continue until the disaster happens. In order to avoid this situation, the
programmer adds a double check for that parameter with a retur routine.

Basic example:
int func(int *p) {

* assert(p); if (p == NULL) { return 0; }*
  return 1;

My proposal is to re-define assert or define a new macro (let's say
assertr, pretty much like assertm) which will take two arguments: condition
and the return value for non-debug builds, In this case, the previous code
may be compacted:
int func(int *p) {
  *assertr(p, 0);*
  return 1;

Thank you,
Gabi Florian

Received on 2022-08-17 14:52:22