我想做这样的事情:
writeLog(printf("This is the error: %s", error));
所以我正在寻找一个返回格式化字符串的函数。
答案 0 :(得分:6)
标准库中没有这样的功能,标准库中永远不会有这样的功能。
如果你想要一个,你可以自己写。以下是您需要考虑的事项:
答案 1 :(得分:6)
鉴于不存在这样的函数,请考虑稍微不同的方法:使writeLog
类似于printf,即获取字符串和可变数量的参数。然后,让它在内部格式化消息。这将解决内存管理问题,并且不会破坏writeLog
的现有用途。
如果您发现这可能,您可以使用以下内容:
void writeLog(const char* format, ...)
{
char msg[100];
va_list args;
va_start(args, format);
vsnprintf(msg, sizeof(msg), format, args); // do check return value
va_end(args);
// write msg to the log
}