在用于日志记录的ispc中定义extern函数printf样式



我想为我的ispc代码实现一个调试函数,该函数可以将日志记录级别作为参数,然后打印f风格的字符串和参数。

签名应该是这样的:

extern "C" void debug_log(enumDebugLevel debugLevel, char *literalString, ...);

我可以看出ispc不支持"函数的变元数";它既不支持字符串也不支持char数据类型,所以我认为可能性非常有限。

但是,有一个名为print的内置函数可以同时处理字符串文字和变量参数计数。我想知道是否有一种方法可以将我的函数实现为外部函数,即使ispc本身不支持这些功能。

我假设您的应用程序中没有控制台窗口?如果是这种情况,您可以做的一件事就是将stdout/stderr重定向到您的日志系统。SO对此进行了大量讨论。

然而,我请求进行更改,允许print()在Windows上调用OutputDebugStringA(),但能够提供自定义回调是一个很好的建议。我将把这个建议添加到下面的GitHub问题中。

https://github.com/ispc/ispc/issues/2140

我是英特尔ISPC团队的一员,非常欢迎外界提出建议/问题。不过最好在GitHub上联系我们!

最新更新