在lambda函数中使用va_end时出现静态分析器警告

让我们说这样的代码:

va_list args;
va_start(args,size);
va_end(args);

在这种情况下,静态分析器没有问题,但是当我重写代码以便可以处理异常时退出范围:

va_list args;
auto closeVaList = [](va_list* list) {va_end(*list);};
va_start(args,size);
std::unique_ptr<va_list,decltype(closeVaList)> guard{&args,closeVaList};

C语静态分析器报告:

warning: va_end() is called on an uninitialized va_list [clang-analyzer-valist.Uninitialized]
auto closeVaList = [](va_list* list) {va_end(*list);};
                                      ^

note: expanded from macro 'va_end'
#define va_end(ap)          __builtin_va_end(ap)

这是虚假报告还是我做错了什么?

xiaokang1984 回答:在lambda函数中使用va_end时出现静态分析器警告

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3052256.html

大家都在问