如何确保vfprintf具有适当数量的参数?
发布时间:2020-12-16 09:37:03 所属栏目:百科 来源:网络整理
导读:我在C中有一个变量参数函数,看起来大致如下: void log(const char * format,...) { va_list args; va_start(args,format); vfprintf( stderr,format,args ); va_end(args); exit(1);} 我可以这样通过callilng崩溃我的应用程序, log(“%s%d”,1); 因为函数
我在C中有一个变量参数函数,看起来大致如下:
void log(const char * format,...) { va_list args; va_start(args,format); vfprintf( stderr,format,args ); va_end(args); exit(1); } 我可以这样通过callilng崩溃我的应用程序, log(“%s%d”,1); 因为函数缺少一个参数.有没有办法确定运行时缺少参数? 解决方法
我不相信会有任何标准机制来确定在运行时.格式说明符后面的参数只是堆栈上的值.例如,如果格式说明符指示接下来是4字节整数,则无法知道堆栈中的下4个字节是否是整数,或者只是前一次调用中堆栈上发生的任何事件.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |