On Sun, Sep 23, 2012 at 6:10 PM, Guy Harris <g...@alum.mit.edu> wrote:
>
> On Sep 23, 2012, at 1:59 PM, Evan Huus <eapa...@gmail.com> wrote:
>
>> Variadic macros are forbidden in doc/README.developer since apparently
>> not all compilers support them.
>>
>> However, I just stumbled across a variadic macro that has apparently
>> been part of the regular build since around 2009
>> (packet-dcerpc-netlogon.c:65).
>>
>> Since nobody (to my knowledge) has complained about a failing build in
>> that time period, I have to assume that whatever ancient compiler
>> didn't support them is no longer being used.
>
> 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.

I'll leave the README unchanged for the moment then.

Just out of curiosity, has anyone ever tried compiling on Windows with
something like MinGW or another compiler? I expect there would be some
initial pain, but if it allows us to drop MSVC and properly move to
C99, I think would be an overall win.

Evan
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to