在写一个console程序时,想写一个函数来处理输出错误信息,像下面这样
void ExportError( LPCTSTR pError );
然后在里面直接通过printf来打印信息。
void ExportError( LPCTSTR pError )
{
printf( pError );
}
后来,想这个函数不够方便,因为我们知道printf支持可变参数的。这样打印一些错误信息时很方便,如
printf( "Error No:%d", 1 );
那么将自己的函数也改变成可变参数的
void ExportError( ... )
{
//???
}
但这时发现不知道如何将不定参数传递给printf了。
我们知道VC++提供了几个宏,可以传递可变参数
那么有什么办法可以直接传递可变参数呢?如果对C语言结构比较熟悉的话,其实也不难,我们只要在中间给一个过渡层就可以了。
这样首先用pop ebx保存返回地址,再调用printf就直接将参数传递过去了,然后就恢复地址并返回。OK!
Debug及Release编译通过.