To get a trial key
fill out the form below
Team License (standard version)
Enterprise License (extended version)
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Request our prices
New License
License Renewal
--Select currency--
USD
EUR
GBP
RUB
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Message submitted.

Your message has been sent. We will email you at


If you haven't received our response, please do the following:
check your Spam/Junk folder and click the "Not Spam" button for our message.
This way, you won't miss messages from our team in the future.

>
>
>
V2504. MISRA. Size of an array is not s…
Analyzer Diagnostics
General Analysis (C++)
General Analysis (C#)
General Analysis (Java)
Diagnosis of micro-optimizations (C++)
Diagnosis of 64-bit errors (Viva64, C++)
MISRA errors
AUTOSAR errors
Additional information
Contents

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

Nov. 19, 2018

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])
{
  ....
}

This diagnostic is classified as:

  • MISRA-C-8.11
  • MISRA-CPP-3.1.3
This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site.
Learn More →
Accept