在 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

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

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

Reply via email to