Как я могу интегрировать bBigFont в следующую функцию?

#c #integration

#c #интеграция

Вопрос:

проблема, с которой я столкнулся, заключается в том, что для игры я хочу упомянуть, что я не очень хороший программист на c , и эта функция действительно доставляет мне головную боль. Я пытаюсь интегрировать многоязычную систему, но я застреваю в функции и не могу найти решение, старая функция выглядит так

 void SendNotice(const char* c_pszBuf, bool bBigFont)
{
    const DESC_MANAGER::DESC_SETamp; c_ref_set = DESC_MANAGER::instance().GetClientSet();

    std::for_each(c_ref_set.begin(), c_ref_set.end(), notice_packet_func(c_pszBuf, bBigFont));
}
  

и новая функция должна выглядеть примерно так

 #ifdef __MULTI_LANGUAGE_SYSTEM__
void SendNotice(const char* c_pszBuf, bool bBigFont, ...)
#else
void SendNotice(const char* c_pszBuf, bool bBigFont)
#endif
{
const DESC_MANAGER::DESC_SETamp; c_ref_set = DESC_MANAGER::instance().GetClientSet();
#ifdef __MULTI_LANGUAGE_SYSTEM__
    if (!c_pszBuf)
        return;

    itertype(c_ref_set) it = c_ref_set.begin();

    while (it != c_ref_set.end())
    {
        LPDESC d = *(it  );

        if (d->GetCharacter())
        {
            const char* c_szLocaleFormat = LC_LOCALE_TEXT(c_pszBuf, d->GetLanguage());

            char szChatBuf[CHAT_MAX_LEN   1];
            va_list args;

            va_start(args, c_pszBuf);
            int len = vsnprintf(szChatBuf, sizeof(szChatBuf), c_szLocaleFormat, args);
            va_end(args);

            d->GetCharacter()->ChatPacket(CHAT_TYPE_NOTICE, "%s", szChatBuf);
        }
    }
#else
    std::for_each(c_ref_set.begin(), c_ref_set.end(), notice_packet_func(c_pszBuf, bBigFont));
#endif
}
  

В новой функции я должен определить bBigFont, но я не понимаю, как, может кто-нибудь исправить функцию?

Комментарии:

1. как вы вообще ожидаете реализовать многоязычность при использовании char , многие языки выходят за рамки однобайтовых строк, а строка unicode не может обрабатываться как строка C с нулевым завершением? И что вы подразумеваете под «определить»? Неясно, что он должен делать.

2. Я опубликовал старую функцию выше того, что я опубликовал, просто для интеграции bBigFont мне нужно заменить « std::for_each(c_ref_set.begin(), c_ref_set.end(), notice_packet_func(c_pszBuf, bBigFont )); « на « if (!c_pszBuf) return; (выможно найти всю функцию наверху) } } «