On Thursday 20 October 2022 21:44:36 Pali Rohár wrote: > On Tuesday 18 October 2022 12:01:34 LIU Hao wrote: > > 在 2022/10/13 00:50, Pali Rohár 写道: > > > Hello! More mingw-w64 header files contain '#ifdef _MSVCRT_' code. > > > But _MSVCRT_ is not defined neither by gcc nor mingw-w64 runtime. > > > So it is a dead code? Or is there any purpose for having those ifdefs? > > > Note that gcc defines macro __MSVCRT__ with double underscores. > > > > > > > > > > ReactOS defines it via command line [1]. I am not clear about it, maybe you > > can check an old version of Microsoft Visual Studio. > > > > [1] > > https://github.com/reactos/reactos/blob/7100a24fc314f4fe0ae58520f405d2fb4f88f3e2/sdk/lib/crt/crt.cmake#L36 > > For example in mingw-w64-headers/crt/ctype.h is code: > > #ifdef _MSVCRT_ > #define __pctype_func() (_pctype) > #else > #ifdef _UCRT > _CRTIMP unsigned short* __pctype_func(void); > #else > #define __pctype_func() (* __MINGW_IMP_SYMBOL(_pctype)) > #endif > #endif > > So is not the first '#define __pctype_func()' useless? Because static > linking of CRT is not supported in mingw-w64 and _CRTIMP for second > implementation is filled based on the fact if compiling mingw-w64 itself > or compiling project. > > And same patterns are also in other files...
It would be nice if somebody who understand these patterns write some comment what is the real purpose of the first __pctype_func() definition because for me it looks like a dead code. And this pattern is repeated multiple times in lot of other header files. _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
