Functions _atoi64, _strtoi64 and _strtoui64 are available since the first
release of msvcrt.dll as part of MS Visual C++ 4.2.
Define functions atoll, strtoll, strtoull, strtoimax and strtoumax as
aliases for msvcrt _atoi64, _strtoi64 and _strtoui64 functions directly in
def files. This would allow applications to directly link to msvcrt
functions. Currently these functions are provided by mingw-w64 functions
strtoimax and strtoumax which are (statically) linked into executables.
Note that all these functions are provided since msvcr120.dll which is part
of MS Visual Studio 2013.
For compatibility with older msvcrt versions, functions _strtoi64 and
_strtoui64 are provided by mingw-w64 as aliases to mingw-w64 strtoimax and
strtoumax implementations.
Also implement atoll() and _atoi64() via strtoll() for older msvcrt
versions.
This change also removes static inline function atoll as now it is always
provided as alias at the link time for every msvcrt version.
Note that mingw-w64 functions strtoimax(), strtoumax() and atoll() should
not be packed into libmingwex.a because libmingwex.a takes precedence over
libmsvcr*.a. To ensure that version from libmsvcr*.a is used, it is
required to move mingw-w64 implementations from libmingwex.a to libmsvcr*.a
(for msvcrt versions which do not provide these functions).
Tested with following simple program and verified that compiled binary
calls _atoi64 and _strtoi64 symbols from msvcrt.dll:
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
int main(int argc, char *argv[]) {
printf("%lld\n", atoll(argv[1]));
printf("%lld\n", strtoll(argv[1], NULL, 0));
printf("%lld\n", strtoimax(argv[1], NULL, 0));
}
---
mingw-w64-crt/Makefile.am | 16 ++++++++++++++--
mingw-w64-crt/lib-common/msvcrt.def.in | 10 ++++++++++
mingw-w64-crt/lib32/msvcr100.def.in | 10 ++++++++++
mingw-w64-crt/lib32/msvcr110.def.in | 10 ++++++++++
mingw-w64-crt/lib32/msvcr70.def | 5 +++++
mingw-w64-crt/lib32/msvcr71.def | 5 +++++
mingw-w64-crt/lib32/msvcr80.def.in | 5 +++++
mingw-w64-crt/lib32/msvcr90.def.in | 10 ++++++++++
mingw-w64-crt/lib32/msvcr90d.def.in | 10 ++++++++++
mingw-w64-crt/lib64/msvcr100.def.in | 10 ++++++++++
mingw-w64-crt/lib64/msvcr110.def.in | 10 ++++++++++
mingw-w64-crt/lib64/msvcr80.def.in | 5 +++++
mingw-w64-crt/lib64/msvcr90.def.in | 10 ++++++++++
mingw-w64-crt/lib64/msvcr90d.def.in | 10 ++++++++++
mingw-w64-crt/misc/strtoimax.c | 9 +++++++++
mingw-w64-crt/misc/strtoumax.c | 9 +++++++++
mingw-w64-crt/stdio/atoll.c | 7 +++++--
mingw-w64-headers/crt/stdlib.h | 1 -
18 files changed, 147 insertions(+), 5 deletions(-)
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 28d74c66a581..5aac06e5e544 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -439,8 +439,11 @@ src_crtdll=\
misc/invalid_parameter_handler.c \
misc/lc_locale_func.c \
misc/seterrno.c \
+ misc/strtoimax.c \
+ misc/strtoumax.c \
stdio/_scprintf.c \
stdio/_vscprintf.c \
+ stdio/atoll.c \
stdio/mingw_dummy__lock.c \
stdio/mingw_lock.c
@@ -456,8 +459,11 @@ src_msvcrt10=\
misc/invalid_parameter_handler.c \
misc/lc_locale_func.c \
misc/seterrno.c \
+ misc/strtoimax.c \
+ misc/strtoumax.c \
stdio/_scprintf.c \
stdio/_vscprintf.c \
+ stdio/atoll.c \
stdio/mingw_dummy__lock.c \
stdio/mingw_lock.c
@@ -468,8 +474,11 @@ src_msvcrt20=\
misc/invalid_parameter_handler.c \
misc/lc_locale_func.c \
misc/seterrno.c \
+ misc/strtoimax.c \
+ misc/strtoumax.c \
stdio/_scprintf.c \
stdio/_vscprintf.c \
+ stdio/atoll.c \
stdio/mingw_dummy__lock.c \
stdio/mingw_lock.c
@@ -478,8 +487,11 @@ src_msvcrt40=\
misc/invalid_parameter_handler.c \
misc/lc_locale_func.c \
misc/seterrno.c \
+ misc/strtoimax.c \
+ misc/strtoumax.c \
stdio/_scprintf.c \
stdio/_vscprintf.c \
+ stdio/atoll.c \
stdio/mingw_dummy__lock.c \
stdio/mingw_lock.c
@@ -563,7 +575,7 @@ src_libmingwex=\
misc/mingw_wcstold.c \
misc/mkstemp.c misc/sleep.c \
misc/strnlen.c misc/strsafe.c \
- misc/strtoimax.c misc/strtoumax.c misc/tdelete.c
misc/tdestroy.c misc/tfind.c \
+ misc/tdelete.c misc/tdestroy.c misc/tfind.c \
misc/tsearch.c misc/twalk.c \
misc/wcsnlen.c misc/wcstof.c \
misc/wcstoimax.c misc/wcstold.c misc/wcstoumax.c
misc/wctob.c misc/wctrans.c \
@@ -582,7 +594,7 @@ src_libmingwex=\
stdio/_Exit.c stdio/_findfirst64i32.c stdio/_findnext64i32.c
stdio/_fstat.c \
stdio/_fstat64i32.c stdio/_ftime.c \
stdio/_stat.c stdio/_stat64i32.c stdio/_wfindfirst64i32.c
stdio/_wfindnext64i32.c \
- stdio/_wstat.c stdio/_wstat64i32.c stdio/asprintf.c
stdio/atoll.c stdio/fgetpos64.c \
+ stdio/_wstat.c stdio/_wstat64i32.c stdio/asprintf.c
stdio/fgetpos64.c \
stdio/fopen64.c stdio/fseeko32.c stdio/fseeko64.c
stdio/fsetpos64.c stdio/ftello.c \
stdio/ftello64.c stdio/ftruncate64.c stdio/lltoa.c
stdio/lltow.c stdio/lseek64.c \
stdio/mingw_fprintf.c stdio/mingw_fprintfw.c stdio/mingw_fscanf.c
stdio/mingw_fwscanf.c stdio/mingw_pformat.c \
diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in
b/mingw-w64-crt/lib-common/msvcrt.def.in
index 942c4c4ebefe..695a4d7f7cba 100644
--- a/mingw-w64-crt/lib-common/msvcrt.def.in
+++ b/mingw-w64-crt/lib-common/msvcrt.def.in
@@ -387,7 +387,9 @@ _atodbl_l
_atof_l
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -1034,10 +1036,18 @@ _strtime
; _strtime_s replaced by emu
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/lib32/msvcr100.def.in
b/mingw-w64-crt/lib32/msvcr100.def.in
index 8e8dfb46096b..676589296de4 100644
--- a/mingw-w64-crt/lib32/msvcr100.def.in
+++ b/mingw-w64-crt/lib32/msvcr100.def.in
@@ -738,7 +738,9 @@ _atof_l
_atoflt
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -1402,10 +1404,18 @@ _strtime
_strtime_s
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/lib32/msvcr110.def.in
b/mingw-w64-crt/lib32/msvcr110.def.in
index b864009b6613..2f2e19b3ce48 100644
--- a/mingw-w64-crt/lib32/msvcr110.def.in
+++ b/mingw-w64-crt/lib32/msvcr110.def.in
@@ -862,7 +862,9 @@ _atof_l
_atoflt
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -1535,10 +1537,18 @@ _strtime
_strtime_s
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/lib32/msvcr70.def b/mingw-w64-crt/lib32/msvcr70.def
index 5ec73e781a3f..43c469fc123e 100644
--- a/mingw-w64-crt/lib32/msvcr70.def
+++ b/mingw-w64-crt/lib32/msvcr70.def
@@ -259,6 +259,7 @@ _amsg_exit
_assert
_atodbl
_atoi64
+atoll == _atoi64
_atoldbl
_beep
_beginthread
@@ -581,7 +582,11 @@ _strrev
_strset
_strtime
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strupr
_swab
_sys_errlist DATA
diff --git a/mingw-w64-crt/lib32/msvcr71.def b/mingw-w64-crt/lib32/msvcr71.def
index 1db6d0b58bf5..5ec0f2ab4ac1 100644
--- a/mingw-w64-crt/lib32/msvcr71.def
+++ b/mingw-w64-crt/lib32/msvcr71.def
@@ -253,6 +253,7 @@ _amsg_exit
_assert
_atodbl
_atoi64
+atoll == _atoi64
_atoldbl
_beep
_beginthread
@@ -576,7 +577,11 @@ _strrev
_strset
_strtime
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strupr
_swab
_sys_errlist DATA
diff --git a/mingw-w64-crt/lib32/msvcr80.def.in
b/mingw-w64-crt/lib32/msvcr80.def.in
index bb1ec8444208..42ded14affc2 100644
--- a/mingw-w64-crt/lib32/msvcr80.def.in
+++ b/mingw-w64-crt/lib32/msvcr80.def.in
@@ -114,6 +114,7 @@ _amsg_exit
_assert
_atodbl
_atoi64
+atoll == _atoi64
_atoldbl
_beep
_beginthread
@@ -842,7 +843,11 @@ _set_security_error_handler
_snscanf
_snwscanf
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_ungetwch
_vscprintf
_vscwprintf
diff --git a/mingw-w64-crt/lib32/msvcr90.def.in
b/mingw-w64-crt/lib32/msvcr90.def.in
index 62789337b7ad..f6de7645e35f 100644
--- a/mingw-w64-crt/lib32/msvcr90.def.in
+++ b/mingw-w64-crt/lib32/msvcr90.def.in
@@ -363,7 +363,9 @@ _atof_l
_atoflt
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -1038,10 +1040,18 @@ _strtime
_strtime_s
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/lib32/msvcr90d.def.in
b/mingw-w64-crt/lib32/msvcr90d.def.in
index 1175bfec1b9c..52c33dcf9751 100644
--- a/mingw-w64-crt/lib32/msvcr90d.def.in
+++ b/mingw-w64-crt/lib32/msvcr90d.def.in
@@ -414,7 +414,9 @@ _atof_l
_atoflt
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -1103,10 +1105,18 @@ _strtime
_strtime_s
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/lib64/msvcr100.def.in
b/mingw-w64-crt/lib64/msvcr100.def.in
index aab982691303..1530a719f019 100644
--- a/mingw-w64-crt/lib64/msvcr100.def.in
+++ b/mingw-w64-crt/lib64/msvcr100.def.in
@@ -696,7 +696,9 @@ _atof_l
_atoflt
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -1349,10 +1351,18 @@ _strtime
_strtime_s
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/lib64/msvcr110.def.in
b/mingw-w64-crt/lib64/msvcr110.def.in
index 60304f9fd0ef..b5b9e3ec5ced 100644
--- a/mingw-w64-crt/lib64/msvcr110.def.in
+++ b/mingw-w64-crt/lib64/msvcr110.def.in
@@ -822,7 +822,9 @@ _atof_l
_atoflt
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -1473,10 +1475,18 @@ _strtime
_strtime_s
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/lib64/msvcr80.def.in
b/mingw-w64-crt/lib64/msvcr80.def.in
index 045052ec8a93..171f5850f1ff 100644
--- a/mingw-w64-crt/lib64/msvcr80.def.in
+++ b/mingw-w64-crt/lib64/msvcr80.def.in
@@ -195,6 +195,7 @@ _amsg_exit
_assert
_atodbl
_atoi64
+atoll == _atoi64
_atoldbl
_beep
_beginthread
@@ -530,7 +531,11 @@ _strrev
_strset
_strtime
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strupr
_swab
_sys_errlist DATA
diff --git a/mingw-w64-crt/lib64/msvcr90.def.in
b/mingw-w64-crt/lib64/msvcr90.def.in
index c8cf9b220262..876a672ea234 100644
--- a/mingw-w64-crt/lib64/msvcr90.def.in
+++ b/mingw-w64-crt/lib64/msvcr90.def.in
@@ -311,7 +311,9 @@ _atof_l
_atoflt
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -971,10 +973,18 @@ _strtime
_strtime_s
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/lib64/msvcr90d.def.in
b/mingw-w64-crt/lib64/msvcr90d.def.in
index 2acdc3fcf7ee..26c5888e681f 100644
--- a/mingw-w64-crt/lib64/msvcr90d.def.in
+++ b/mingw-w64-crt/lib64/msvcr90d.def.in
@@ -356,7 +356,9 @@ _atof_l
_atoflt
_atoflt_l
_atoi64
+atoll == _atoi64
_atoi64_l
+_atoll_l == _atoi64_l
_atoi_l
_atol_l
_atoldbl
@@ -1030,10 +1032,18 @@ _strtime
_strtime_s
_strtod_l
_strtoi64
+strtoll == _strtoi64
+strtoimax == _strtoi64
_strtoi64_l
+_strtoll_l == _strtoi64_l
+_strtoimax_l == _strtoi64_l
_strtol_l
_strtoui64
+strtoull == _strtoui64
+strtoumax == _strtoui64
_strtoui64_l
+_strtoull_l == _strtoui64_l
+_strtoumax_l == _strtoui64_l
_strtoul_l
_strupr
_strupr_l
diff --git a/mingw-w64-crt/misc/strtoimax.c b/mingw-w64-crt/misc/strtoimax.c
index 9e75f8a27503..7f09869cb0b1 100644
--- a/mingw-w64-crt/misc/strtoimax.c
+++ b/mingw-w64-crt/misc/strtoimax.c
@@ -31,6 +31,7 @@
#define valid(n, b) ((n) >= 0 && (n) < (b))
intmax_t
+__cdecl
strtoimax(const char * __restrict__ nptr, char ** __restrict__ endptr, int
base)
{
register uintmax_t accum; /* accumulates converted value */
@@ -109,6 +110,14 @@ strtoimax(const char * __restrict__ nptr, char **
__restrict__ endptr, int base)
else
return (intmax_t)(minus ? -accum : accum);
}
+intmax_t (__cdecl *__MINGW_IMP_SYMBOL(strtoimax))(const char* __restrict__,
char ** __restrict__, int) = strtoimax;
long long __attribute__ ((alias ("strtoimax")))
+__cdecl
strtoll (const char* __restrict__ nptr, char ** __restrict__ endptr, int base);
+long long (__cdecl *__MINGW_IMP_SYMBOL(strtoll))(const char* __restrict__,
char ** __restrict__, int) = strtoll;
+
+__int64 __attribute__ ((alias ("strtoimax")))
+__cdecl
+_strtoi64 (const char* __restrict__ nptr, char ** __restrict__ endptr, int
base);
+__int64 (__cdecl *__MINGW_IMP_SYMBOL(_strtoi64))(const char* __restrict__,
char ** __restrict__, int) = _strtoi64;
diff --git a/mingw-w64-crt/misc/strtoumax.c b/mingw-w64-crt/misc/strtoumax.c
index 2c24db14d829..d47a7c90d8f1 100644
--- a/mingw-w64-crt/misc/strtoumax.c
+++ b/mingw-w64-crt/misc/strtoumax.c
@@ -31,6 +31,7 @@
#define valid(n, b) ((n) >= 0 && (n) < (b))
uintmax_t
+__cdecl
strtoumax(const char * __restrict__ nptr, char ** __restrict__ endptr, int
base)
{
register uintmax_t accum; /* accumulates converted value */
@@ -107,6 +108,14 @@ strtoumax(const char * __restrict__ nptr, char **
__restrict__ endptr, int base)
else
return minus ? -accum : accum; /* (yes!) */
}
+uintmax_t (__cdecl *__MINGW_IMP_SYMBOL(strtoumax))(const char* __restrict__,
char ** __restrict__, int) = strtoumax;
unsigned long long __attribute__ ((alias ("strtoumax")))
+__cdecl
strtoull (const char* __restrict__ nptr, char ** __restrict__ endptr, int
base);
+unsigned long long (__cdecl *__MINGW_IMP_SYMBOL(strtoull))(const char*
__restrict__, char ** __restrict__, int) = strtoull;
+
+unsigned __int64 __attribute__ ((alias ("strtoumax")))
+__cdecl
+_strtoui64 (const char* __restrict__ nptr, char ** __restrict__ endptr, int
base);
+unsigned __int64 (__cdecl *__MINGW_IMP_SYMBOL(_strtoui64))(const char*
__restrict__, char ** __restrict__, int) = _strtoui64;
diff --git a/mingw-w64-crt/stdio/atoll.c b/mingw-w64-crt/stdio/atoll.c
index 39df0139f3d3..278c01cf9257 100644
--- a/mingw-w64-crt/stdio/atoll.c
+++ b/mingw-w64-crt/stdio/atoll.c
@@ -6,5 +6,8 @@
#define __CRT__NO_INLINE
#include <stdlib.h>
-long long atoll (const char * _c)
- { return _atoi64 (_c); }
+long long __cdecl atoll(const char * nptr) { return strtoll(nptr, NULL, 10); }
+long long (__cdecl *__MINGW_IMP_SYMBOL(atoll))(const char *) = atoll;
+
+__int64 __attribute__((alias("atoll"))) __cdecl _atoi64(const char * nptr);
+__int64 (__cdecl *__MINGW_IMP_SYMBOL(_atoi64))(const char *) = _atoi64;
diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h
index 1d864bbbdc49..128f3bf97f52 100644
--- a/mingw-w64-headers/crt/stdlib.h
+++ b/mingw-w64-headers/crt/stdlib.h
@@ -749,7 +749,6 @@ unsigned long __cdecl _lrotr(unsigned long,int);
/* __CRT_INLINE using non-ansi functions */
#ifndef __CRT__NO_INLINE
- __MINGW_EXTENSION __CRT_INLINE long long __cdecl atoll (const char * _c) {
return _atoi64 (_c); }
__MINGW_EXTENSION __CRT_INLINE char *__cdecl lltoa (long long _n, char * _c,
int _i) { return _i64toa (_n, _c, _i); }
__MINGW_EXTENSION __CRT_INLINE char *__cdecl ulltoa (unsigned long long _n,
char * _c, int _i) { return _ui64toa (_n, _c, _i); }
__MINGW_EXTENSION __CRT_INLINE long long __cdecl wtoll (const wchar_t * _w)
{ return _wtoi64 (_w); }
--
2.20.1
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public