Date: Wed, 17 Aug 2022 11:27:22 -0500
On Wed, Aug 17, 2022 at 9:52 AM Florian Gavril via Std-Proposals <
std-proposals_at_[hidden]> wrote:
> Hello,
>
> 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;
> }
>
Would this proposal cover your use case? https://wg21.link/p2546r
std-proposals_at_[hidden]> wrote:
> Hello,
>
> 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;
> }
>
Would this proposal cover your use case? https://wg21.link/p2546r
-- -- René Ferdinand Rivera Morell -- Don't Assume Anything -- No Supone Nada -- Robot Dreams - http://robot-dreams.net
Received on 2022-08-17 16:27:37