首页 > 解决方案 > 用于 Linux 和 Windows 的 wprintf 可移植代码

问题描述

我有需要移植到 Linux 的 Windows 代码。

例如,Windows 使用了很多 wprintf_s 函数。

wprintf_s(L"Not enough input parameters. See usage statement below.\n\n");

我们Linux中没有wprintf_s,因为参数是一样的,我用下面的语句把wprintf_s转换成wprintf

#define wprintf_s wprintf

但是我遇到了一个问题,Linux 中的 wprintf 只为这个语句打印一个字符。

wprintf_s(L"Failed to %u. [%s]: %s\n",
                ucID,
                GetStringErrorName(eError),
                GetStringErrorDescription(eError));

将 %s 修改为 %ls 会给我完整的字符串。但这会让我在下面添加很多

#ifdef _WIN32 
wprintf_s(L"Failed to %u. [%s]: %s\n",
                    ucID,
                    GetStringErrorName(eError),
                    GetStringErrorDescription(eError)); 
#elif __linux__
wprintf_s(L"Failed to %u. [%ls]: %ls\n",
                    ucID,
                    GetStringErrorName(eError),
                    GetStringErrorDescription(eError)); 
#endif

你们能否在这个问题上提供一个更好的方法。谢谢。

标签: clinuxwindowsprintfstdout

解决方案


推荐阅读