PR 5399 adds an Kconfig option for NDEBUG. The salient discussion begins at [2] there are mixed positions and reasoning. xiaoxiang781216 asked me to raise a discussion on this.
The reasoning for the Default state of to be NDEBUG (n) hence undefined so that assert() enabled is the following: 1) It follows the standard understanding of NDEBUG The standard for standard library from [3] The definition of the macro assert depends on another macro, NDEBUG, *which is not defined* by the standard library. 2) We have DEBUGASSERT for use in the OS. I believe this was an intentional separation on Greg’s part. We have asked for is input. In a NuttX "Release" build DEGUASSERT is off (all debug is off to show off the build size). I should still be able to build the app code with assert() and not have to use a Kconfig to enable it. How would you prefer it to be defined? 1. Defaulted ON – assert() is a No OP 2. Defaulted OFF assert() is enabled. 3. Left to a command line setting from build system David [1] https://github.com/apache/incubator-nuttx/pull/5399 [2] https://github.com/apache/incubator-nuttx/pull/5399#issuecomment-1029387606 [3] https://en.cppreference.com/w/c/error/assert#:~:text=If%20NDEBUG%20is%20defined%20as,the%20source%20code%20where%20%3Cassert.&text=If%20NDEBUG%20is%20not%20defined,output%20and%20calls%20abort() .