> On Oct 4, 2015, at 7:41 AM, Peter Wu <pe...@lekensteyn.nl> wrote: > > On Thu, Oct 01, 2015 at 10:15:12AM -0700, Guy Harris wrote: >> >> On Oct 1, 2015, at 9:53 AM, Alexis La Goutte <alexis.lagou...@gmail.com> >> wrote: >> >>> Yes, there is a "warning" with GCC from some month... >>> >>> ../../epan/proto.h:2740:54: warning: anonymous variadic macros were >>> introduced in C99 [-Wvariadic-macros] >> >> Perhaps we need to turn on the "use C99" flag for some compilers, >> including, but not limited to, GCC-compatible compilers, to suppress >> warnings or even errors. > > The feature seems supported even in c90 mode on gcc 5.2.0 and clang > 3.7.0. After reading the gcc manual page, I've decided to settle with > -Wno-variadic-macros.
And, from 2012: https://www.wireshark.org/lists/wireshark-dev/201209/msg00144.html where "they" refers to variadic macros: > They're supported with Microsoft's compilers at least as far back as Visual > Studio 2005: > > http://msdn.microsoft.com/en-us/library/ms177415(v=vs.80).aspx > > There's no earlier version of the documentation offered by the "Other > Versions" dropdown, but I don't know whether that means "earlier compilers, > such as MSVC 6, didn't support them" or "we don't have the MSVC 6 > documentation online". This page: > > > http://bytes.com/topic/c/answers/220087-macros-variable-parameter-list-ms-vc-compiler-6-0-a > > has a claim that MSVC 6 didn't support variadic macros. If that's the case, > I don't personally have a problem with kicking MSVC 6 to the curb; we may > already have done so in the documentation, as > > http://www.wireshark.org/docs/wsdg_html_chunked/ChToolsMSChain.html > > only mentions it when it says "The official Wireshark 1.8.x releases are > compiled using Microsoft Visual C++ 2010 SP1. The official 1.2, 1.4, and 1.6 > releases are and were compiled using Microsoft Visual C++ 2008 SP1. Other > past releases, including the 1.0 branch, were compiled using Microsoft Visual > C++ 6.0.", and doesn't at all discuss using MSVC++ 6. > > I don't know what other compilers, such as Sun C^WOracle Solaris Studio, HP's > ANSI C compiler, or IBM's XL C support. My *guess* is that older versions of > those compilers may not have supported them but that they've all up-to-date > with C99 features. > > Sun C fully supported C99 as of Sun Studio 12 (not to be confused with Sun > Studio, Memphis :-)): > > http://docs.oracle.com/cd/E19205-01/820-4155/c.html#about > > *if* you specify -xc99; I don't know whether it or later versions support > variadic macros without -xc99 or whether earlier versions supported them. > > IBM C for AIX fully supported C99 as of V6.0 in 2002: > > > http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=an&subtype=ca&supplier=897&appname=IBMLinkRedirect&letternum=ENUS202-161 > > and XL C for AIX > > http://www-01.ibm.com/software/awdtools/xlcpp/aix/features/ > > supports C99 now (with no indication in the document of when it started, but > the Wikipedia page for C99, whence I got these references, says it started > with V11.1). I don't know whether either of them have separate C89 and C99 > modes (which they might, for the benefit of those developing code that needs > to build on C89 compilers) or whether, in C89 mode, they support extensions > such as variadic macros. Given that one of IBM's compilers is the reason why > we ban // comments - it disallows them by default - I suspect that, when not > running in C99 (or C11?) mode, they do not support them. > > The HP ANSI C compiler supports C99 at least as of A.06.25 > > > http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/Online_Help/getstarted.htm > > I don't know whether it has separate C89 and C99 modes (which they might, for > the benefit of those developing code that needs to build on C89 compilers) or > whether, in C89 mode, it supports extensions such as variadic macros. > >> P.S. Are there any other C99 features that we forbid that are actually >> supported by supposedly C89-only compilers like MSVC? > > // comments are, I think, supported by MSVC; I don't know whether any UN*X C > compilers support them without being told to run in C99 or C11 (or "GCC > compatible"?) mode. > > Turning on "full C99" mode for compilers does run the risk of people using > C99 features *not* supported by MSVC++ and not having them discovered until > the build breaks. At this point, given Microsoft's apparently-renewed interest in C99, I'd say we should, for all compilers, turn on whatever flags are needed to support variadic macros and // comments, and if that means not catching some C99 features not supported by MSVC++ prior to the latest version, so be it. So, yeah, let's go for -Wno-variadic-macros. I may try running the 2.0-rc1 source tarball through the compilers on The Written Word's machines and, if anything breaks, see if there are compiler flags that need to be turned on. > Patch is at https://code.wireshark.org/review/10781 I've reviewed it +2 and submitted it, so it should be in 2.0-rc1 (or rc0 or whatever Gerald calls it). ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev@wireshark.org> Archives: https://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe