On Sat, Nov 8, 2014 at 12:05 AM, Ozkan Sezer <[email protected]> wrote:
> On 11/7/14, Dongsheng Song <[email protected]> wrote:
>> On Fri, Nov 7, 2014 at 7:51 PM, Ozkan Sezer <[email protected]> wrote:
>>> On 11/7/14, Ray Donnelly <[email protected]> wrote:
>>>> On Fri, Nov 7, 2014 at 11:10 AM, Ozkan Sezer <[email protected]> wrote:
>>>>> On 11/7/14, Ruben Van Boxem <[email protected]> wrote:
>>>>>> 2014-11-07 9:25 GMT+01:00 Ozkan Sezer <[email protected]>:
>>>>>>
>>>>>>> On 11/7/14, Dongsheng Song <[email protected]> wrote:
>>>>>>> > If we define _POSIX_, then getpid (process.h) was hidden.
>>>>>>> > Is it correct ?
>>>>>>> >
>>>>>>> > PS: MSVC 2012 is the last compiler which use _POSIX_, MSVC 2013 do
>>>>>>> > not
>>>>>>> > use _POSIX_ anymore.
>>>>>>> > MSVC 2012/2013 guard getpid with !__STDC__.
>>>>>>>
>>>>>>> I believe (but not necessarily correct about iıt) that MSVC's _POSIX
>>>>>>> symbol is intended for diffrerent purposes, i.e. windows posix
>>>>>>> subsystem,
>>>>>>> and I believe that we are doing a wrong thing with having those _POSIX
>>>>>>> ifdefs in our headers..  Someone correct me if I'm wrong.
>>>>>>>
>>>>>>
>>>>>> I have no idea, but be aware at least one reference in GCC showed up:
>>>>>> https://gcc.gnu.org/bugzilla/attachment.cgi?id=20034&action=edit
>>>>>>
>>>>>> But maybe that's there exactly because _POSIX is in the MinGW-w64
>>>>>> headers...
>>>>>
>>>>> I remember that they defined _POSIX only because mingw-w64 headers
>>>>> required it for certain declarations
>>>>
>>>> Also, should we consider renaming _POSIX to _POSIX_SOURCE?
>>>>
>>>
>>> What I am saying is that those two have different meanings.
>>> If we ever get rid of _POSIX we will possibly need to remove
>>> certain stuff too. Things that currently are guarded by _POSIX
>>> but should actually be guarded by _POSIX_SOURCE are there too
>>> and they are another part of the story.
>>>
>>
>> During port libressl to Windows, I feel very painful on such macros.
>> I want to use _POSIX_C_SOURCE to replace _POSIX, _POSIX_,
>> _POSIX_SOURCE in all headers.
>> The first is normalization in _mingw.h.in:
>>
>> --- a/mingw-w64-headers/crt/_mingw.h.in
>> +++ b/mingw-w64-headers/crt/_mingw.h.in
>> @@ -7,6 +7,26 @@
>>  #ifndef _INC__MINGW_H
>>  #define _INC__MINGW_H
>>
>> +#if defined(_POSIX) || defined(_POSIX_) \
>> +       || defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE)  \
>> +       || defined(_REENTRANT) || defined(_THREAD_SAFE) ||
>> defined(_POSIX_THREAD_SAFE_FUNCTIONS)
>> +
>> +/* This has been superseded by _POSIX_C_SOURCE. */
>> +#ifndef _POSIX_SOURCE
>> +#define _POSIX_SOURCE 1
>> +#endif
>> +
>> +/* Functions like wcscasecmp() and strnlen() were only added in
>> POSIX.1-2008 */
>> +#ifndef _POSIX_C_SOURCE
>> +#define _POSIX_C_SOURCE 200809L
>> +#endif
>> +
>> +#if (defined(_REENTRANT) || defined(_THREAD_SAFE)) &&
>> !defined(_POSIX_THREAD_SAFE_FUNCTIONS)
>> +#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
>> +#endif
>> +
>> +#endif
>> +
>>
>> comments ?
>
> I'd say that this is lazy and wrong.  IMO, doing it right way should be
> changing the correct (only the correct) _POSIX guards to _POSIX_SOURCE
> instead, and hope that the project requesting such features are actually
> defining _POSIX_SOURCE. (you should possily also cover _GNU_SOURCE, etc)
>
> --
> O.S.
>

If you use _POSIX_SOURCE guard, no more _POSIX guard, you must make
_POSIX_SOURCE defined automatically when _POSIX defined for
compatibility.

PS:_POSIX_SOURCE has been superseded by _POSIX_C_SOURCE.

------------------------------------------------------------------------------
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to