On 01.09.2018 22:15, Walter Bright wrote:
https://blog.regehr.org/archives/1091

As usual, John nails it in a particularly well-written essay.

"ASSERT(expr)
Asserts that an expression is true. The expression may or may not be evaluated.
If the expression is true, execution continues normally.
If the expression is false, what happens is undefined."

Note the "may or may not be evaluated." We've debated this here before. I'm rather pleased that John agrees with me on this.

He does not! John gives two definitions. The first definition is the one I want, and he calls it _the best definition_. (I.e., all other definitions are inferior.)

I.e. the optimizer can assume the expression is true and use that information to generate better code, even if the assert code generation is turned off.

The definition you quoted is the /alternative/ definition. He does not call it the best definition, and even explains that it can be dangerous. He says "it’s not an interpretation that is universally useful". (!)

I don't understand how you can conclude from this that John's view is that this should be the default -release behavior of assertions.

Reply via email to