Jos*_*son 5 c variadic-functions clang-tidy
在以下函数中,我进行初始化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;
}
Run Code Online (Sandbox Code Playgroud)
更奇怪的是,这只会在我一次清理多个文件时发生,因此clang-tidy tmp2.c不会发出警告,但是clang-tidy tmp2.c tmp2.c会发出警告!
这是我的代码还是clang-tidy的问题?我使用的是LLVM 7.0.0版,但8.0.0也会出现该警告。