On 29 August 2016 at 21:29, Selva Nair <selva.n...@gmail.com> wrote:
>
> On Sun, Aug 28, 2016 at 3:46 PM, Steffan Karger <stef...@karger.me> wrote:
>>
>> On 28 August 2016 at 21:42, Steffan Karger <stef...@karger.me> wrote:
>> > Previously, we would use the compiler's default C version, which
>> > defaults
>> > to gnu89 for GCC < 5, gnu11 for GCC > 5, and c11 for clang, but might
>> > even
>> > differ per distro.
>> >
>> > One of the reasons to accept the gnu89 default of GCC < 4.9, was that
>> > MSVC
>> > didn't support c99.  But in MSVC 2015, MS finanally fixed that.
>> >
>> > Having to support c89 in the codebase occasionally forces us to write
>> > less
>> > readable code, for example by forcing all declaration to be at the
>> > starting
>> > of a block (which includes 'for loop initial declarations').
>> >
>> > Let's be clear about what standard we obey, and stop punishing ourselves
>> > with c89/gnu89.  Let's switch the master branch to c99.
>>
>> To be clear:  I'm aware we never really decided to switch to c99, so
>> this patch is partly meant to start discussion.  Anyone who cares for
>> gnu89 support, please speak up :)
>
> I have been all along wishing for this switch to C99 and the demise of dated
> MSVC support. But we also have to keep in mind that mingw-w64 (and mingw)
> targets a least common denominator of Windows runtime (runtime version 6.0
> ?). That is not going to change as the very spirit of mingw is to make
> executables that run with stock windows libraries. That means features of
> C99 requiring run-time support (stdio is an example) cannot be supported by
> mingw by default as it requires statically linking in additional code.
>
> For example,  __USE_MINGW_ANSI_STDIO has to be defined to support some of
> the printf format specs and that adds about 50K to the binary. That also
> invalidates windows-specific format specifiers such as %I64u which is used
> in a couple places in the code. Last time I suggested this Gert was opposed
> to it on grounds of the extra define, need for code changes, increased
> binary size etc..

Yes I'm aware of this.  Even so, just compile-time c99 support is
valuable in itself.

> My personal preference: go for -std=c99, add the above define for mingw and
> get rid of %I64.. (a only a couple of instances). That said, I do not know
> how complete is the C99 support in mingw-w64, and whether there are other
> issues that need work around. I suppose we can handle them, if any, as they
> come..

That would be my preference too.  Definitely c99, maybe
__USE_MINGW_ANSI_STDIO__ too.  I don't care too much for 50 kB extra
in Windows binaries.  I'd be much more worried about 50 kB in linux
binaries, as that would hurt quite some embedded platforms.

-Steffan

On 29 August 2016 at 21:29, Selva Nair <selva.n...@gmail.com> wrote:
>
> On Sun, Aug 28, 2016 at 3:46 PM, Steffan Karger <stef...@karger.me> wrote:
>>
>> On 28 August 2016 at 21:42, Steffan Karger <stef...@karger.me> wrote:
>> > Previously, we would use the compiler's default C version, which
>> > defaults
>> > to gnu89 for GCC < 5, gnu11 for GCC > 5, and c11 for clang, but might
>> > even
>> > differ per distro.
>> >
>> > One of the reasons to accept the gnu89 default of GCC < 4.9, was that
>> > MSVC
>> > didn't support c99.  But in MSVC 2015, MS finanally fixed that.
>> >
>> > Having to support c89 in the codebase occasionally forces us to write
>> > less
>> > readable code, for example by forcing all declaration to be at the
>> > starting
>> > of a block (which includes 'for loop initial declarations').
>> >
>> > Let's be clear about what standard we obey, and stop punishing ourselves
>> > with c89/gnu89.  Let's switch the master branch to c99.
>>
>> To be clear:  I'm aware we never really decided to switch to c99, so
>> this patch is partly meant to start discussion.  Anyone who cares for
>> gnu89 support, please speak up :)
>
>
> I have been all along wishing for this switch to C99 and the demise of dated
> MSVC support. But we also have to keep in mind that mingw-w64 (and mingw)
> targets a least common denominator of Windows runtime (runtime version 6.0
> ?). That is not going to change as the very spirit of mingw is to make
> executables that run with stock windows libraries. That means features of
> C99 requiring run-time support (stdio is an example) cannot be supported by
> mingw by default as it requires statically linking in additional code.
>
> For example,  __USE_MINGW_ANSI_STDIO has to be defined to support some of
> the printf format specs and that adds about 50K to the binary. That also
> invalidates windows-specific format specifiers such as %I64u which is used
> in a couple places in the code. Last time I suggested this Gert was opposed
> to it on grounds of the extra define, need for code changes, increased
> binary size etc..
>
> My personal preference: go for -std=c99, add the above define for mingw and
> get rid of %I64.. (a only a couple of instances). That said, I do not know
> how complete is the C99 support in mingw-w64, and whether there are other
> issues that need work around. I suppose we can handle them, if any, as they
> come..
>
> Selva

------------------------------------------------------------------------------
_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to