C++ Logo

std-proposals

Advanced search

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

From: Florian Gavril <gv.florian_at_[hidden]>
Date: Thu, 18 Aug 2022 08:18:06 +0300
Thanks a lot, I believe that Contracts is covering my case.

On Wed, Aug 17, 2022 at 7:27 PM René Ferdinand Rivera Morell <
grafikrobot_at_[hidden]> wrote:

> 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
>
> --
> -- René Ferdinand Rivera Morell
> -- Don't Assume Anything -- No Supone Nada
> -- Robot Dreams - http://robot-dreams.net
>
>

Received on 2022-08-18 05:18:20