c - 用于 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
你们能否在这个问题上提供一个更好的方法。谢谢。
解决方案
推荐阅读
- c# - 我应该从 API 再次在主屏幕中加载图像,还是最初将其保存到基于 Unity 的 AR 应用程序的设备中?
- python - Python:如何对 df 列中的行字符串进行排序?
- java - 我希望将用户给定字符串的所有小写字母转换为“#”。但是在运行代码时,只有最后一个小写字符被转换
- google-sheets - 当条件与另一张表匹配时的条件格式谷歌表
- python - 我正在 python 中创建一个程序,我应该将哪些文件添加到 gitignore?
- android - 在自定义吐司上设置边距
- docker - 具有委托一致性的 docker 容器之间的文件系统是否一致?
- javascript - 在 javascript 中保护 Firebase Secret
- opencv - 错误:(-2:未指定的错误)来自 OpenCV dnn 模块
- graphics - 顶点的线性插值以在 Metal 中实现多面外观