Только в Xcode (визуальная студия в порядке), я вижу разрыв swprintf, если вы попытаетесь поместить его в функцию-обертку с помощью va_args.va_args разрывает широкие строковые функции (swprintf) в XCode
Упрощенный пример:
void test(wchar_t *a_buffer, int a_buffer_size, const wchar_t* a_format, ...)
{
va_list args;
va_start(args, a_format);
::swprintf(a_buffer, a_buffer_size, a_format, args);
va_end(args);
}
double value = 1.0;
wchar_t text[32];
::swprintf(text, 32, L"%f", value); // this works (text=L"1.0000")
test(text, 32, L"%f", 30.0); // this does not work (text=L"0.0000")
Любая помощь приветствуется, это довольно трудная задача. Я предполагаю, что проблема связана с некоторыми причудами XCode.
Я уже перепутал с настройками и свойствами файла Locale, предложенными в этом вопросе: swprintf fails with unicode characters in xcode, but works in visual studio, но он не дал никаких изменений, это выглядит как отдельная проблема.
Спасибо.
'swprintf()' does _not_ принимает аргумент varargs. Вы хотите использовать 'vswprintf()'. – mah
vswprintf() действительно то, что мне нужно, спасибо. –