﻿# V2603\. MISRA\. The 'static' keyword shall not be used between \[\] in the declaration of an array parameter\.

Данное диагностическое правило основано на руководстве [MISRA](https://www.misra.org.uk/) \(Motor Industry Software Reliability Association\) по разработке программного обеспечения\.

Это правило актуально только для С\. Ключевое слово 'static' не должно использоваться в контексте указания размера массива, принимаемого функцией, так как оно может быть проигнорировано\. По сути, оно является лишь указанием компилятору, на основании которого он может сгенерировать более эффективный код\.

Рассмотрим пример:

```cpp
void add(int left[static 10], int right[static 10])
{
  for(size_t i = 0U; i < 10U; ++i)
  {
    left[i] += right[i];
  }
}

extern int data1[10];
extern int data2[20];
extern int data3[5];

void foo(void)
{
  add(data1, data2);
  add(data1, data3);
}
```

В коде несколько раз вызывается функция 'add', формальными параметрами которой являются два массива размером не менее 10 элементов\. Второй вызов функции приведёт к неопределённому поведению, так как фактический размер массива \(5\) меньше ожидаемого \(10\)\.