gpt4 book ai didi

c - 为什么 clang-tidy 说 vsnprintf 有一个未初始化的 va_list 参数?

转载 作者:行者123 更新时间:2023-12-04 11:14:26 27 4
gpt4 key购买 nike

在下面的函数中,我初始化 args ,在调用 va_start 时使用它们,然后调用va_end .

代码对我来说看起来不错,但 clang-tidy 给出了警告:
tmp2.c:7:11: error: Function 'vsnprintf' is called with an uninitialized va_list argument [clang-analyzer-valist.Uninitialized,-warnings-as-errors]
len = vsnprintf((void*)0, 0, format, args);

#include<stdarg.h>
#include<stdio.h>
int f(char *format, ...) {
int len;
va_list args;
va_start(args, format);
len = vsnprintf((void*)0, 0, format, args);
va_end(args);
return len;
}

更奇怪的是,这只发生在我一次 lint 多个文件时,所以 clang-tidy tmp2.c不发出警告,但 clang-tidy tmp2.c tmp2.c做!

这是我的代码或clang-tidy的问题吗?我使用的是 LLVM 版本 7.0.0,但警告也出现在 8.0.0 中。

最佳答案

这是 clang-tidy 中的一个错误.它最类似于 this bug ,你显然已经看到了。

此外,来自注释 in the comments ,您不必转换 0(void *) .类型转换已经是隐含的。

关于c - 为什么 clang-tidy 说 vsnprintf 有一个未初始化的 va_list 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672959/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com