【发布时间】:2014-05-20 08:23:30
【问题描述】:
人们说使用vprintf 而不是printf。但我不能,因为我需要使用自己的功能。
- 我有 2 个自定义函数
- 都使用 va_list
- 一个函数使用另一个函数
那么是否可以在没有这些 v... 函数的情况下链接 va_list 调用?如何 ?
代码:
char* createString(const char* line, ...)
{
char* result = (char*)malloc(100);
va_list args;
va_start(args, line);
vsprintf(result, line, args);
va_end(args);
return result;
}
void show(const char* line, ...)
{
va_list args;
va_start(args, line);
char* a = createString(line, args);
va_end(args);
AfxMessageBox(a);
free(a);
}
// usage:
show("test %i, %i", 12, 123);
当我尝试这个时,我得到了错误的字符串显示。我得到了一些指针或东西,而不是 12 和 123。
悲哀的解决方案:
char* vCreateString(const char* line, va_list args)
{
char* result = (char*)malloc(100);
vsprintf(result, line, args);
return result;
}
【问题讨论】:
标签: c parameters printf