C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 在异常容易的代码中使用va_list是否安全?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
典型例子:
void foo(const char *fmt,...)
{
    va_list args;
    va_start(args,fmt);

    // might throw,might not.  who kNows.
    bar(fmt,args);

    // uh-oh...
    va_end(args);
}

这是一个坏主意,即在c中使用va_list是不常见的?如果我把酒吧放在try-catch中,那有帮助吗?什么是一些替代品?

解决方法

C标准符合va_start等的规范的C标准. C标准有这样的说法:

7.15.1p1 … va_start和va_copy宏的每个调用应通过相同功能中的va_end宏的相应调用进行匹配.

因此,如果您在调用va_start之后但在va_end之前以任何方式退出函数,则程序将显示未定义的行为.

是的,包装条在try / catch将有所帮助.

大佬总结

以上是大佬教程为你收集整理的c – 在异常容易的代码中使用va_list是否安全?全部内容,希望文章能够帮你解决c – 在异常容易的代码中使用va_list是否安全?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。