V2504. MISRA. Size of an array is not specified.


This diagnostic rule is based on the software development guidelines developed by MISRA (Motor Industry Software Reliability Association).

This rule varies for C and C++.

C: the size of an array with the 'extern' specifier must be specified explicitly.

The analyzer issues this warning when it detects a declaration of an array with the 'extern' specifier, provided that the array size is not specified explicitly. For example:

extern int arr[];

Explicitly specifying the array size makes code clearer and helps to prevent mistakes leading to an array overrun due to its exact size being unknown to the programmer.

To eliminate the warning, specify the array size explicitly.

extern int arr[12];

C++: the size of an array must be specified explicitly.

The analyzer issues this warning when it detects a declaration of an array whose size is not specified explicitly. If the array size can be inferred from the initializer, the warning is not issued.

This warning is also issued for a function parameter written as an array whose size is not specified explicitly. For example:

void foo(int arr[])
{
  ....
}

To eliminate the warning, rewrite the parameter declaration or specify the expected array size explicitly. To achieve that, the code above could be modified as follows:

void foo(int *arr)
{
  ....
}

Or:

void foo(int arr[256])
{
  ....
}

Bugs Found

Checked Projects
355
Collected Errors
13 303