devxlogo

Avoid This Common ASSERT(…) Mistake

Avoid This Common ASSERT(…) Mistake

ASSERT is a very helpful macro for debugging, because it helps root out false assumptions. However, many programmers make the mistake of putting actual assignments inside the macro. Consider the following:

 a = GetA();ASSERT(a != NULL);

size=3>
It is tempting to collapse this code into a single line:

 ASSERT((a = GetA()) != NULL);

size=3>
This will only work in testing a DEBUG build of your code. When building release code, the ASSERT macro compiles to nothing, so the assignment:

 a = GetA();

size=3>
never happens, and can cause crashes.

devx-admin

Share the Post: