// va_arg_test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdarg.h>
//#define NLOG
#ifndef NLOG
//#define Log print
#define LogprintTimeStamp
#else
#define Log
#endif
{
int i;
double dbl;
char c;
while(*fmt)
{
if(*fmt == '%')
{
fmt++;
if(*fmt == 'd')
{
i = va_arg(ap, int);
printf("%d", i);
fmt++;
}
else if(*fmt == 'c')
{
c = va_arg(ap, char);
printf("%c", c);
fmt++;
}
}
else{
printf("%c", *fmt++);
}
}
}
//without time stamp
void print(CHAR *fmt, ...)
{
va_list ap;
va_end(ap);
}
//with time stamp
void printTimeStamp(CHAR *fmt, ...)
{
va_list ap;
print_va(fmt, ap);
va_end(ap);
}
int _tmain(int argc, _TCHAR* argv[])
{
Log("%c %c %d\n", 'a', 'b', 32);
getchar();
return 0;
}
//
#include "stdafx.h"
#include <stdarg.h>
//#define NLOG
#ifndef NLOG
//#define Log print
#define LogprintTimeStamp
#else
#define Log
#endif
typedef char CHAR;
void print_va(CHAR *fmt, va_list ap){
int i;
double dbl;
char c;
while(*fmt)
{
if(*fmt == '%')
{
fmt++;
if(*fmt == 'd')
{
i = va_arg(ap, int);
printf("%d", i);
fmt++;
}
else if(*fmt == 'c')
{
c = va_arg(ap, char);
printf("%c", c);
fmt++;
}
}
else{
printf("%c", *fmt++);
}
}
}
//without time stamp
void print(CHAR *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
print_va(fmt, ap);va_end(ap);
}
//with time stamp
void printTimeStamp(CHAR *fmt, ...)
{
va_list ap;
printf("%s", "Time 12:32:56 :");
va_start(ap, fmt);print_va(fmt, ap);
va_end(ap);
}
int _tmain(int argc, _TCHAR* argv[])
{
Log("%c %c %d\n", 'a', 'b', 32);
getchar();
return 0;
}