В следующей функции я инициализирую 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;
}
Еще более странно, что это происходит только тогда, когда я снимаю несколько файлов одновременно, поэтому clang-tidy tmp2.c
не выдает предупреждение, но clang-tidy tmp2.c tmp2.c
делает!
Это проблема с моим кодом или clang-tidy? Я использую LLVM версии 7.0.0, но предупреждение также появляется с 8.0.0.