Why is syntax error 'assert(false, "some text")' not discovered by Visual Studio?
Regina Henschel
rb.henschel at t-online.de
Wed Sep 19 07:56:05 UTC 2018
Hi,
Tor Lillqvist schrieb am 19-Sep-18 um 08:04:
> But even if assert(e) expands to nothing, the compiler should report an
> error if you pass two arguments to the assert macro that takes just one.
> At least Clang on macOS and gcc on Linux do:
>
> assert.cpp:5:17: error: too many arguments provided to function-like
> macro invocation
> assert(false, "sdsdf");
>
> and
>
> assert.cpp:5:24: error: macro "assert" passed 2 arguments, but takes just 1
> assert(false, "sdsdf");
>
> In the NDEBUG case, where assert is defined as:
>
> #define assert(e) ((void)0)
>
> and
>
> # define assert(expr) (__ASSERT_VOID_CAST (0))
>
> Regina, try adding some very obvious syntax error, some foo bar zap,
> after the assert(false, "Standard layer may not be deleted.");, to see
> if that line even is compiled.
The line
assert(false, "Standard layer may not be deleted.")+1;
produces an error.
And I have seen now in an isolated 'make sd.build', that the line
assert(false, "Standard layer may not be deleted.");
produces a
warning C4002: too many arguments for function-like macro invocation
'assert'
It is likely that I have not noticed the warning in the jumble of output
of a full build.
Nevertheless, it is corrected and I hope Jenkins will success now.
Thanks for your help.
Regina
More information about the LibreOffice
mailing list