在 2025-12-18 14:23, Kirill Makurin 写道:
This patch series adds missing _CRTIMP in declarations of some functions in several header files. There are still many places where _CRTIMP is missing, I'll try to take care of them later.
Thanks. I have pushed this series of patches now.
There are a few things I've noticed and would like to mention: First, we have duplicating (guarded) declarations in multiple header files, such as various wcs* functions are declared in both wchar.h and string.h. Should we move them to a separate header file, similarly to what MSVC does, with headers like correct_wchar.h?
If you meant corecrt_wchar.h.. I don't see such a header from MSVC.
Second, mingw-w64 ctype.h declared four functions as external: isascii, toascii, iscsymf and iscsym. They all are aliases for the same functions but with two leading underscores (e.g. __isascii). They are declared with _CRTIMP, which does not seem correct to me. MSVC does not provide these four functions as externals, so I think it would be better to remove _CRTIMP.
`isascii()` can be found in an old SDK (e.g. Platform SDK for Windows 2003) where there's _CRTIMP.
Third, should we add _CRTIMP at least for some of wcs*/str* functions, such as
{wcs,str}spn? It seems that MSVC declares at least {wcs,str}{cspn,spn,pbrk}
with _ACRTIMP, so I think it safe to add _CRTIMP at least for those? I hesitate
to touch the rest.
It makes sense for functions that are likely to be imported from DLLs, as it eliminates a little overhead under such circumstances. For functions that are emulated, such as `mbrlen()`, there's likely no difference.
-- Best regards, LIU Hao
OpenPGP_signature.asc
Description: OpenPGP digital signature
_______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
