c – 在异常容易的代码中使用va_list是否安全?
发布时间:2020-12-16 05:22:05 所属栏目:百科 来源:网络整理
导读:典型例子: 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中,那有帮助吗
典型例子:
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 – DirectX SDK与Windows SDK:哪一个使用?
- 在Swift中从nib加载UIView
- Flash反编译软件(Action Script Viewer)ASV2012/09.19发布
- ruby-on-rails – capybara-webkit – rails session未保留
- oracle中数据文件移动或者改名的两种方法
- ruby-on-rails-3 – activescaffold belongs_to relationsh
- ajax – 使用cfdiv绑定时禁用插页式图形
- 升级到Heroku的postgres
- Flex实现代码分离mxml/as
- ruby-on-rails-3 – rmagick gem警告