void printf_u8(const char *fmt, ...) { #if defined(PLATFORM_WINDOWS) // 在 windows 控制台输出一个 utf8 字符串,代价巨大 // 同时我并不理解 MSVC 的思路,不知道如何同时使用 UTF-8 no bom 编码文件同时正常输出utf8 // 只有妥协 int size; va_list args; va_start(args, fmt); size = vsnprintf(NULL, 0, fmt, args); va_end(args); char *buf = malloc(sizeof(char) * (size+1)); va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); wchar_t* final_str = _utf8_to_16(buf); wprintf(final_str); free(buf); free(final_str); #else va_list args; va_start(args, fmt); vprintf(fmt, args); va_end(args); #endif }
void printf_u8(const char *fmt, ...) { #if defined(PLATFORM_WINDOWS) int size; va_list args; va_start(args, fmt); size = vsnprintf(NULL, 0, fmt, args); va_end(args); char *buf = malloc(sizeof(char) * (size+1)); va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); wchar_t* final_str = _utf8_to_16(buf); wprintf(final_str); free(buf); free(final_str); #else va_list args; va_start(args, fmt); vprintf(fmt, args); va_end(args); #endif }