# V3554. AUTOSAR. The standard input/output functions should not be used.

Данное диагностическое правило основано на руководстве AUTOSAR (AUTomotive Open System ARchitecture) по разработке программного обеспечения.

Функции стандартной библиотеки из заголовочных файлов '<stdio.h>' / '<cstdio>' и '<wchar.h>' могут быть опасны. Их поведение зависит от реализации, а их использование может привести к неопределенному поведению.

Рассмотрим следующий фрагмент кода:

    #include <stdio.h>

    void InputFromFile(FILE *file); // Read from 'file'

    void foo()
    {
      FILE *stream;
      ....
      InputFromFile(stream);
      fflush(stream);
    }

В коде сначала происходит чтение из потока 'stream', а затем поток передается в функцию 'fflush'. Такая последовательность операций приводит к неопределенному поведению.

Анализатор выдаст предупреждение, если обнаружит использование любых функций, определенных в заголовочных файлах '<stdio.h>' / '<cstdio>' и '<wchar.h>':

- fopen;
- fclose;
- freopen;
- fflush;
- setbuf;
- setvbuf;
- etc.

Пример кода, на который анализатор выдаст предупреждение:

    #include <stdio.h>

    void foo(const char *filename, FILE *oldFd)
    {
      FILE *newFd = freopen(filename, "r", oldFd);
      ....
    }

Данная диагностика классифицируется как:

AUTOSAR-M27.0.1