#include <stdio.h>
#include <stdarg.h>
using namespace std;
#define MACRO_PRINT
void MACRO_Print(const char* format, ...) {
#ifdef MACRO_PRINT
if (NULL == format)
{
return;
}
char szStr[1024] = { 0 };
va_list ap = NULL;
va_start(ap, format);
vsprintf_s(szStr, format, ap);
printf(szStr);
va_end(ap);
#endif // MACRO_Print
}
void main()
{
printf("%s", "ok!");
MACRO_Print("macro print:%s","sucess");
#include <stdarg.h>
using namespace std;
#define MACRO_PRINT
void MACRO_Print(const char* format, ...) {
#ifdef MACRO_PRINT
if (NULL == format)
{
return;
}
char szStr[1024] = { 0 };
va_list ap = NULL;
va_start(ap, format);
vsprintf_s(szStr, format, ap);
printf(szStr);
va_end(ap);
#endif // MACRO_Print
}
void main()
{
printf("%s", "ok!");
MACRO_Print("macro print:%s","sucess");
}
附:定义函数:int vsprintf(char * str, const char * format, va_list ap);
函数说明:vsprintf()会根据参数format 字符串来转换并格式化数据, 然后将结果复制到参数str 所指的字符串数组, 直到出现字符串结束('\0')为止. 关于参数format 字符串的格式请参考printf(). va_list 用法请参考附录C 或vprintf()范例.
返回值:成功则返回参数str 字符串长度, 失败则返回-1, 错误原因存于errno 中.