Чтобы дать более подробную информацию, я пишу код, используя C для OS X, используя XCode 4.2 и компилятор LLVM GCC 4.2.2.
У меня есть функция переменного аргумента - я включаю всю функцию для полноты, хотяЯ / полагаю / большая часть этого не имеет значения, единственная проблема, которую я имею, состоит в том, как vswprintf ведет себя в некоторых случаях.
void FTFRenderText( const struct FTFFont* const pxFont,
const int iStartX, const int iStartY,
const wchar_t* const wszFormatString,
... )
{
if( !pxFont || !( pxFont->mbValid ) )
{
return;
}
static wchar_t lswszBuffer[ 2048 ];
va_list xArguments;
va_start( xArguments, wszFormatString );
//
// SE - TODO: remove
vwprintf( wszFormatString, xArguments );
va_end( xArguments );
va_start( xArguments, wszFormatString );
//
vswprintf( lswszBuffer, 2048, wszFormatString, xArguments );
va_end( xArguments );
const struct FTFTriList xTriList =
FTFCreateTriListFromText( pxFont, iStartX, iStartY, lswszBuffer );
const int iIndexCount = xTriList.miNumIndices;
if( iIndexCount )
{
// SE - TODO: something to allow user selected colour
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
glVertexPointer( 2, GL_FLOAT, 0, xTriList.mpfVertices );
glDrawElements(
GL_TRIANGLES, iIndexCount, GL_UNSIGNED_SHORT, xTriList.mpsIndices );
}
}
Возможно, я неясен, но кажется, что если я прохожу достаточно простонабор параметров типа "Test% d", 101 функции работают нормально.Однако, если я передаю строку с символом Unicode, либо в виде литерала, либо с помощью \ uXXXX, строка, которую я получаю из vswprintf, полностью пуста. В отладчике я вижу, что компилятор правильно сделал строку со строкой в памяти,и он содержит символ Unicode - но строка, записанная в vswprintf, имеет все 0s.
Сравнение с wprintf и vwprintf интересно - потому что оба, кажется, ведут себя так, как я ожидаю, и производят ожидаемый символ Unicode из обоих литералови \ uXXXX ускользает.
Я не хочу утверждать, что библиотека глючит, потому что множество других библиотек и приложений были построены на вершине просто отлично, так что я думаю, что я делаю что-то не так, но я простоне могу понять, что это может быть ...
Буду признателен за любые предложения или помощь.