如何写一个类似printf的函数! 用 __cdecl调用约定,自己清栈 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用 __cdecl调用约定,自己清栈 使用...作函数参数,可参考msdn例子(variable argument lists)。 #include <stdarg.h>void myfunc_v(char *format,...){ va_list vp; char *s1; va_start(vp,format); s1 = va_arg(vp,char*); va_end(vp);} C语言的参数压栈规则是从右向左,所以第一个参数(就是format)的地址就是[EBP+4],第二个参数的地址就是[EBP+8],依此类推。在函数内部不需要知道参数的数量,只要按照format里的格式一个一个转化就行了。 void MyDebugOutput(char *format, ... ){#ifdef _MYDEBUG_ va_list er; va_start(er, format); vfprintf( debugfp,format, er); fflush(debugfp);#endif //_MYDEBUG_}其他地方调用时和用 printf 一样,如 MyDebugOutput("output = %d, %d, %s\n", v1,v2,s1); 谢谢大家,我会自己看MSDN的! 在Win7 SP1下,用VC6.0和VS2010编译ADO后,程序在XP下运行,不能连接数据库。 工具栏 居中? 制作qq右下脚淡入淡出提示窗口 MFC链接 Access数据库 界面跳转 求助!!关于按钮与文件!给分! 小问题,这段编译错误原因是什么? 请教extern的问题 AfxBeginThread启动线程问题 两个编译上的问题,希望有高人解决。 寻找msdn中文版 怎么没有什么WindowsCE开发的问题?对WindowsCE开发感兴趣的请留下交流方式吧! 学过C也学JAVA但都不是太好!在学VC要不要看C++的书呀!
{
va_list vp;
char *s1; va_start(vp,format);
s1 = va_arg(vp,char*);
va_end(vp);
}
{
#ifdef _MYDEBUG_
va_list er;
va_start(er, format); vfprintf( debugfp,format, er); fflush(debugfp);
#endif //_MYDEBUG_
}其他地方调用时和用 printf 一样,如 MyDebugOutput("output = %d, %d, %s\n", v1,v2,s1);