Am Sa., 23. Mai 2020 um 16:02 Uhr schrieb Bruno Haible <[email protected]>:
> I was expecting that you write
>
> struct
> {
> void *base; ...
> }
This removes type safety. The benefit of the current approach is that
stack types of different types are not compatible.
> Then macro should better be called STACK_FREE or STACK_DESTROY.
> The name STACK_CLEAR suggests that the result is still a valid stack, and
> empty.
Thank you for this suggestion; much better.
> > In the form of assure of the assure module? Or, to facilitate
> > optimization, better assume from verify module? In non-debug builds, I
> > want to make sure that no superfluous checks are made.
>
> The 'verify' module is for compile-time checks.
>
> 'assure' is an improved form of 'assert'.
The verify also contains a runtime check `assume', which uses
__builtin_unreachable if available to help the compiler in optimizing
modes.