Why is syntax error 'assert(false, "some text")' not discovered by Visual Studio?
Kohei Yoshida
libreoffice at kohei.us
Wed Sep 19 00:27:48 UTC 2018
On Wed, 2018-09-19 at 01:29 +0200, Regina Henschel wrote:
> Hi all,
>
> I had the line
> assert(false, "Standard layer may not be deleted.");
>
> But Visual Studio 2017 does not detect the syntax error. Is there
> something wrong with my environment?
No there is nothing "wrong" with your environment. It just means that
you are building with a release (or a non-debug) configuration. In
C/C++, assert() is not a real function but a compiler macro, which
replaces what's inside the parentheses () with something with a no-op
if you are building a release build before the compiler even gets a
chance to parse it.
You can either re-build yours with a debug configuration, or if you
just want to enable assert in a specific file only without re-building
the whole thing, then you can just insert
#undef NDEBUG
at the beginning of the file to trigger the assert calls in that file
temporarily.
Here is a longer version of this explanation:
http://www.cplusplus.com/reference/cassert/assert/
Kohei
--
Kohei Yoshida, LibreOffice Calc volunteer hacker
More information about the LibreOffice
mailing list