The C ++ 11 standard indicates that vwscanf is available through the <cwchar> header (and therefore <wchar.h> ). However, it seems to be missing in Visual C ++. With this function, I could write & hellip;
inline int scanf( CodingValue const* format, ... ) { va_list args; va_start( args, format ); return ::vwscanf( format->ptr(), args ); }
but without it, that is, with Visual C ++ 10.0, which also lacks support for C ++ 11 variable templates, I'm m shortened to writing & hellip;
inline int scanf( CodingValue const* format, void* a01 = 0, void* a02 = 0, void* a03 = 0, void* a04 = 0, void* a05 = 0, void* a06 = 0, void* a07 = 0, void* a08 = 0, void* a09 = 0, void* a10 = 0, void* a11 = 0, void* a12 = 0 ) { int const nArgs = !!a01 + !!a02 + !!a03 + !!a04 + !!a05 + !!a06 + !!a07 + !!a08 + !!a09 + !!a10 + !!a11 + !!a12; BasicCodingValue const* const f = format->ptr(); switch( nArgs ) { case 0: return ::wscanf( f ); case 1: return ::wscanf( f,a01 ); case 2: return ::wscanf( f,a01,a02 ); case 3: return ::wscanf( f,a01,a02,a03 ); case 4: return ::wscanf( f,a01,a02,a03,a04 ); case 5: return ::wscanf( f,a01,a02,a03,a04,a05 ); case 6: return ::wscanf( f,a01,a02,a03,a04,a05,a06 ); case 7: return ::wscanf( f,a01,a02,a03,a04,a05,a06,a07 ); case 8: return ::wscanf( f,a01,a02,a03,a04,a05,a06,a07,a08 ); case 9: return ::wscanf( f,a01,a02,a03,a04,a05,a06,a07,a08,a09 ); case 10: return ::wscanf( f,a01,a02,a03,a04,a05,a06,a07,a08,a09,a10 ); case 11: return ::wscanf( f,a01,a02,a03,a04,a05,a06,a07,a08,a09,a10,a11 ); case 12: return ::wscanf( f,a01,a02,a03,a04,a05,a06,a07,a08,a09,a10,a11,a12 ); } }
Or, I could make an assembly as I liked it 15 years ago when I ran into a similar (or perhaps the same) problem, but this is not entirely correct.
Can you suggest a better way?