#### 3.3.2 Strict ANSI/ISO ¶

The command-line option `-pedantic` in combination with `-ansi` will cause `gcc` to reject all GNU C extensions, not just those that are incompatible with the ANSI/ISO standard. This helps you to write portable programs which follow the ANSI/ISO standard.

Here is a program which uses variable-size arrays, a GNU C extension. The array `x[n]` is declared with a length specified by the integer variable `n`.

    int
    main (int argc, char *argv[])
    {
      int i, n = argc;
      double x[n];

      for (i = 0; i < n; i++)
        x[i] = i;

      return 0;
    }

This program will compile with `-ansi`, because support for variable length arrays does not interfere with the compilation of valid ANSI/ISO programs—it is a backwards-compatible extension:

    $ gcc -Wall -ansi gnuarray.c

However, compiling with `-ansi -pedantic` reports warnings about violations of the ANSI/ISO standard:

    $ gcc -Wall -ansi -pedantic gnuarray.c
    gnuarray.c: In function `main':
    gnuarray.c:5: warning: ISO C90 forbids variable-size
      array `x'

Note that an absence of warnings from `-ansi -pedantic` does not guarantee that a program strictly conforms to the ANSI/ISO standard. The standard itself specifies only a limited set of circumstances that should generate diagnostics, and these are what `-ansi -pedantic` reports.