<- Back
Comments (45)
- WalterBrightD just makes assert() part of the language:https://dlang.org/spec/expression.html#assert_expressionsThe behavior of it can be set with a compiler switch to one of:1. Immediately halting via execution of a special CPU instruction2. Aborting the program3. Calling the assert failure function in the corresponding C runtime library4. Throwing the AssertError exception in the D runtime librarySo there's no issue with parsing it. The compiler also understands the semantics of assert(), and so things like `assert(0)` can be recognized as being the end of the program.
- MontagFTBPutting code with side effects into an assert is asking for trouble. Compile with NDEBUG set and the effects mysteriously disappear! Anything beyond an equality expression or straight boolean should be avoided.
- omoikane> (assert) doesn't follow the usual SCREAMING_SNAKE_CASE convention we associate with macrosThere are a few things like that, for example:https://en.cppreference.com/w/c/numeric/math/isnan - isnan is an implementation defined macro.https://en.cppreference.com/w/c/io/fgetc - `getc` may be implemented as a macro, but often it's a function.
- nyc_pizzadevThe nice thing about assert() is you can just define your own:https://github.com/fiberfs/fiberfs/blob/7e79eaabbb180b0f1a79...In this case, the ability to see the actual values that triggered the assert is way more helpful.
- grokcodecFriedns shouldn't let Freidns post on HN without running spell check
- wpollock> assert(x > 0 && "x was not greater than zero");Shouldn't that be "||" rather than "&&"? We want the message only if the boolean expression is false.
- anonundefined
- adzmOne of my favorite things from ATL/WTL was the _ASSERT_E macro which additionally converts the source expression to text for a better message to be logged
- ameliusShouldn't the preprocessor be fixed, if it trips that easily on common C++ constructs?
- semiinfinitely"C++47: Finally, a Standard Way to Split a String by Delimiter"
- throwpoasterassert(spellcheck(“Friednly”));