88
99#include <corecrt.h>
1010
11+ #define __CORRECT_ISO_CPP_STRING_H_PROTO // For stl
12+
1113#ifdef __cplusplus
1214extern "C" {
1315#endif
@@ -29,6 +31,7 @@ extern "C" {
2931 _In_ int _Val ,
3032 _In_ size_t _MaxCount );
3133
34+ _CRT_DISABLE_GCC_WARNINGS
3235 _Must_inspect_result_
3336 _CRTIMP
3437 _CONST_RETURN
@@ -38,6 +41,19 @@ extern "C" {
3841 _In_reads_bytes_opt_ (_MaxCount ) const void * _Buf ,
3942 _In_ int _Val ,
4043 _In_ size_t _MaxCount );
44+ _CRT_RESTORE_GCC_WARNINGS
45+
46+ #if defined __cplusplus
47+ extern "C++" _Must_inspect_result_
48+ inline void * __CRTDECL memchr (
49+ _In_reads_bytes_opt_ (_MaxCount ) void * _Buf ,
50+ _In_ int _Val ,
51+ _In_ size_t _MaxCount )
52+ {
53+ const void * _Bufc = _Buf ;
54+ return const_cast < void * > (memchr (_Bufc , _Val , _MaxCount ));
55+ }
56+ #endif
4157
4258 _Must_inspect_result_
4359 _CRTIMP
@@ -174,6 +190,7 @@ extern "C" {
174190 _strdup (
175191 _In_opt_z_ const char * _Src );
176192
193+ _CRT_DISABLE_GCC_WARNINGS
177194 _Check_return_
178195 _CRTIMP
179196 _CONST_RETURN
@@ -182,6 +199,16 @@ extern "C" {
182199 strchr (
183200 _In_z_ const char * _Str ,
184201 _In_ int _Val );
202+ _CRT_RESTORE_GCC_WARNINGS
203+
204+ #ifdef __cplusplus
205+ extern "C ++ "
206+ _Check_return_
207+ inline char * __CRTDECL strchr (_In_z_ char * _String , _In_ int _Ch )
208+ {
209+ return const_cast < char * > (strchr (static_cast < const char * > (_String ), _Ch ));
210+ }
211+ #endif // __cplusplus
185212
186213 _Check_return_
187214 _CRTIMP
@@ -365,6 +392,7 @@ extern "C" {
365392 int _Val ,
366393 size_t _MaxCount );
367394
395+ _CRT_DISABLE_GCC_WARNINGS
368396 _Check_return_
369397 _CRTIMP
370398 _CONST_RETURN
@@ -373,7 +401,18 @@ extern "C" {
373401 strpbrk (
374402 _In_z_ const char * _Str ,
375403 _In_z_ const char * _Control );
404+ _CRT_RESTORE_GCC_WARNINGS
376405
406+ #ifdef __cplusplus
407+ extern "C ++ "
408+ _Check_return_
409+ inline char * __CRTDECL strpbrk (_In_z_ char * _String , _In_z_ const char * _Control )
410+ {
411+ return const_cast < char * > (strpbrk (static_cast < const char * > (_String ), _Control ));
412+ }
413+ #endif // __cplusplus
414+
415+ _CRT_DISABLE_GCC_WARNINGS
377416 _Check_return_
378417 _CRTIMP
379418 _CONST_RETURN
@@ -382,6 +421,16 @@ extern "C" {
382421 strrchr (
383422 _In_z_ const char * _Str ,
384423 _In_ int _Ch );
424+ _CRT_RESTORE_GCC_WARNINGS
425+
426+ #ifdef __cplusplus
427+ extern "C++"
428+ _Check_return_
429+ inline char * __CRTDECL strrchr (_In_z_ char * _String , _In_ int _Ch )
430+ {
431+ return const_cast < char * > (strrchr (static_cast < const char * > (_String ), _Ch ));
432+ }
433+ #endif // __cplusplus
385434
386435 _CRTIMP
387436 char *
@@ -397,6 +446,7 @@ extern "C" {
397446 _In_z_ const char * _Str ,
398447 _In_z_ const char * _Control );
399448
449+ _CRT_DISABLE_GCC_WARNINGS
400450 _Check_return_
401451 _CRTIMP
402452 _CONST_RETURN
@@ -405,6 +455,16 @@ extern "C" {
405455 strstr (
406456 _In_z_ const char * _Str ,
407457 _In_z_ const char * _SubStr );
458+ _CRT_RESTORE_GCC_WARNINGS
459+
460+ #ifdef __cplusplus
461+ extern "C++"
462+ _Check_return_ _Ret_maybenull_
463+ inline char * __CRTDECL strstr (_In_z_ char * _String , _In_z_ const char * _SubString )
464+ {
465+ return const_cast < char * > (strstr (static_cast < const char * > (_String ), _SubString ));
466+ }
467+ #endif // __cplusplus
408468
409469 _Check_return_
410470 _CRTIMP
@@ -636,6 +696,16 @@ extern "C" {
636696 _In_z_ const wchar_t * _Str ,
637697 wchar_t _Ch );
638698
699+ #ifdef __cplusplus
700+ extern "C ++ "
701+ _Check_return_
702+ _When_ (return != NULL, _Ret_range_ (_String , _String + _String_length_ (_String ) - 1 ))
703+ inline wchar_t * __CRTDECL wcschr (_In_z_ wchar_t * _String , wchar_t _C )
704+ {
705+ return const_cast < wchar_t * > (wcschr (static_cast < const wchar_t * > (_String ), _C ));
706+ }
707+ #endif // __cplusplus
708+
639709 _Check_return_
640710 _CRTIMP
641711 int
@@ -714,6 +784,15 @@ extern "C" {
714784 _In_z_ const wchar_t * _Str ,
715785 _In_z_ const wchar_t * _Control );
716786
787+ #ifdef __cplusplus
788+ extern "C ++ "
789+ _Check_return_
790+ inline wchar_t * __cdecl wcspbrk (_In_z_ wchar_t * _Str , _In_z_ const wchar_t * _Control )
791+ {
792+ return const_cast < wchar_t * > (wcspbrk (static_cast < const wchar_t * > (_Str ), _Control ));
793+ }
794+ #endif // __cplusplus
795+
717796 _Check_return_
718797 _CRTIMP
719798 _CONST_RETURN
@@ -723,6 +802,15 @@ extern "C" {
723802 _In_z_ const wchar_t * _Str ,
724803 _In_ wchar_t _Ch );
725804
805+ #ifdef __cplusplus
806+ extern "C++"
807+ _Check_return_
808+ inline wchar_t * __CRTDECL wcsrchr (_In_z_ wchar_t * _String , _In_ wchar_t _C )
809+ {
810+ return const_cast < wchar_t * > (wcsrchr (static_cast < const wchar_t * > (_String ), _C ));
811+ }
812+ #endif // __cplusplus
813+
726814 _Check_return_
727815 _CRTIMP
728816 size_t
@@ -731,6 +819,7 @@ extern "C" {
731819 _In_z_ const wchar_t * _Str ,
732820 _In_z_ const wchar_t * _Control );
733821
822+ _CRT_DISABLE_GCC_WARNINGS
734823 _When_ (return != 0 ,
735824 _Ret_range_ (_Str , _Str + _String_length_ (_Str ) - 1 ))
736825 _CRTIMP
@@ -740,6 +829,17 @@ extern "C" {
740829 wcsstr (
741830 _In_z_ const wchar_t * _Str ,
742831 _In_z_ const wchar_t * _SubStr );
832+ _CRT_RESTORE_GCC_WARNINGS
833+
834+ #ifdef __cplusplus
835+ extern "C++"
836+ _Check_return_ _Ret_maybenull_
837+ _When_ (return != NULL , _Ret_range_ (_String , _String + _String_length_ (_String ) - 1 ))
838+ inline wchar_t * __CRTDECL wcsstr (_In_z_ wchar_t * _String , _In_z_ const wchar_t * _SubStr )
839+ {
840+ return const_cast < wchar_t * > (wcsstr (static_cast < const wchar_t * > (_String ), _SubStr ));
841+ }
842+ #endif // __cplusplus
743843
744844 _Check_return_
745845 _CRTIMP
0 commit comments