[Development] Dropping the variadic version of QSKIP

Thiago Macieira thiago.macieira at intel.com
Wed Jul 10 18:46:48 CEST 2013


On quarta-feira, 10 de julho de 2013 15.09.41, Albert Astals Cid wrote:
> Hi all, in 14cd2678396ed1450a72aeffa99c1504743ea415 a variadic version of
> QSKIP was added so that the old Qt4 version of
>    QSKIP(statement, mode)
> would compile on C++11 enabled compilers silently ignoring the mode.
> 
> This has a down side, it is causing that code like
>    QSKIP("HOLA");
> gives
>   warning: ISO C99 requires rest arguments to be used [enabled by default]
> when compiled with -pedantic and C++11
> 
> Furthermore, things like
>   QSKIP("HOLA", SkipSingle);
> don't compile anymore because moc complains
>   main.cpp:11: Error: Macro argument mismatch.
> 
> So it doesn't seem it makes much sense to keep the variadic version of QSKIP
> to enable the compatibility with the old Qt4 syntax if moc is not accepting
> it anymore.
> 
> Would you guys accept a patch that drops the variadic version of QSKIP?

Well, there is a moc bug in the parsing of variadic macros, evidently.

Is there any way we can use the rest arguments without making them take effect? 
Such as by making a string out of them that doesn't get used anywhere:

#define QSKIP(x, ...)
 { static const char _[] = #__VA_ARGS__; } \
 [existing code]
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.qt-project.org/pipermail/development/attachments/20130710/033c9e0e/attachment.sig>


More information about the Development mailing list