W dniu 01.11.2018 o 16:06, Earnie via Mingw-w64-public pisze:
> On 11/1/2018 10:53 AM, Earnie wrote:
>>
>>
>> On 11/1/2018 10:33 AM, Liu Hao wrote:
>>> 在 2018/11/1 9:52, Mateusz 写道:
>>>> During discussion about inttypes I realized that we check (in header 
>>>> files) if
>>>> __USE_MINGW_ANSI_STDIO is active in non consistent way:
>>>> #if defined(__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0)
>>>> #elif defined(__USE_MINGW_ANSI_STDIO)
>>>> #if !defined (__USE_MINGW_ANSI_STDIO) || __USE_MINGW_ANSI_STDIO == 0
>>>>
>>>> Attached patch simplified checking if __USE_MINGW_ANSI_STDIO is active -- 
>>>> it
>>>> always define __USE_MINGW_ANSI_STDIO to 0 or 1 in _mingw.h so now it 
>>>> should be
>>>> simple:
>>>> #if __USE_MINGW_ANSI_STDIO /* active */
>>>> #if __USE_MINGW_ANSI_STDIO == 0 /* not active */
>>>>
>>>> Please review.
>>>>
>>>
>>> Are there any existent projects where `__USE_MINGW_ANSI_STDIO` is
>>> defined as something other than `0` or `1`, if it is defined at all,
>>> including empty?
>>
>> If by `empty' you mean `#define FOO` as being empty the value is
>> actually 1. If __USE_MINGW_ANSI_STDIO is set to some unexpected value
>> then _mingw.h could handle it and set to the standard value of 1 or give
>> a #error (maybe best).
> 
> If __USE_MINGW_ANSI_STDIO is defined but not numeric adding 0 results in
> a value of 0. The patch to _mingw.h needs to check defined and set the
> value to 1.
> 
> <file name="foo.c">
> #define FOO foo
> #if (FOO + 0) == 0
> #warning FOO is 0
> #endif
> </file>
> 
> $ gcc -c foo.c
> foo.c:3:2: warning: #warning FOO is 0 [-Wcpp]
>  #warning FOO is 0

Yes, if you compile
gcc -D__USE_MINGW_ANSI_STDIO=foo ...
it will be set to 0.

It is technically complicated to handle 'foo' case different than 0.
If you know the trick, please share.

Regards,
Mateusz



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to