До конца раздачи бесплатных лицензий осталось 00:59:58. Забрать!
Данное диагностическое правило основано на руководстве MISRA (Motor Industry Software Reliability Association) по разработке программного обеспечения.
Данное диагностическое правило актуально только для C++. В коде не должно быть ни одной определённой вариативной пользовательской функции (содержащий эллипсис '...'). Аргументы, передаваемые в функцию через эллипсис, не проверяются компилятором на соответствие типов, что может привести к ошибкам. Имея только объявление без определения, можно перепутать тип аргументов. Также передача аргумента non-POD типа ведёт к неопределённому поведению.
Пример кода, на который анализатор выдаст предупреждение:
void foo(int _, ...) // <=
{
va_list ap;
va_start(ap, _);
....
va_end(ap);
}
Стандарт, однако, разрешает объявление вариативных функций для использования существующих библиотечных функций. Допустимый код:
int printf(const char *fmt, ...);
Данная диагностика классифицируется как:
|
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: