我正在用 LogMessage(/*arguments*/)
替换 printf(/*heterogeneous pack of arguments*/)
。
但是,我得到了
Error C2665 'swprintf_s': none of the 2 overloads could convert all the argument types
template<class ...T>
auto DwarfCuda::LogMessage(T&&... args) -> void
{
wchar_t updatedMessage[256];
swprintf_s(updatedMessage, forward<T>(args)...); //C2665
if (LogMessageChangedCallback != nullptr)
LogMessageChangedCallback(updatedMessage);
}
它适用于许多示例,但不适用于此示例:
LogMessage( " GPU Max Clock rate: %.0f MHz (%0.2f GHz)\n",
deviceProp.clockRate * 1e-3f, deviceProp.clockRate * 1e-6f);
为什么这行不通(首先不应该进行强制转换)?如何正确执行此操作?
最佳答案
问题出在 LogMessage
的调用中:格式字符串必须是 wstring
,因此 中缺少
触发了错误。 L
L"GPU Max Clock rate: %.0f MHz (%0.2f GHz)\n"
关于c++ - 如何转换转发的参数包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55034224/