Home > Backend Development > C++ > body text

Why does GCC allow variable-sized arrays in C ?

Mary-Kate Olsen
Release: 2024-11-01 09:26:30
Original
531 people have browsed it

Why does GCC allow variable-sized arrays in C  ?

Variable-Sized Arrays in C : Compiling with GCC Extensions

C typically requires array sizes to be constant integers. However, GCC provides an extension that allows for the use of non-constant variables to declare array sizes.

Question:

Why does the following code compile successfully with GCC?

<code class="cpp">void f(int i) {
    int v1[i];
}

int main() {
    int i = 3;
    int v2[i];
    f(5);
}</code>
Copy after login

Answer:

This behavior is an extension to the C standard introduced by GCC. By default, GCC allows you to use non-constant variables to specify array sizes.

However, there are important caveats to note:

  • Portability Concerns: This extension is not part of the C standard, so your code may not compile with other C compilers.
  • Possible Warning: You can enable the -pedantic option for GCC to issue a warning when using this extension.
  • Error in Strict Mode: Setting -std=c 98 will cause GCC to treat using non-constant array sizes as an error.

Using the Extension:

To utilize this extension, simply declare your array with a non-constant variable as its size:

<code class="cpp">int arraySize = 5;
int myArray[arraySize];</code>
Copy after login

Overcoming Portability Concerns:

If portability is a concern, you can use the std::vector container instead of arrays with variable sizes:

<code class="cpp">std::vector<int> myVector(arraySize);</code>
Copy after login

By utilizing this extension, you gain greater flexibility in managing array sizes in dynamic situations. However, it's important to be aware of its limitations and consider its portability implications when using it in your projects.

The above is the detailed content of Why does GCC allow variable-sized arrays in C ?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!