int arr[array_ele];
is a variable-length array declaration. It is standard C (since C99). However, cl.exe
is not a standard-compliant C compiler, and Microsoft has basically stated that they do not intend to produce a standard-compliant C compiler (one could assume malicious intent and say they do not want to help writing portable code), focusing instead on implementing C++ features. More discussion about Visual Studio support for C standards at Visual Studio support for new C / C++ standards?
Some features of the (by now and then obsoleted) C99 are supported on VS2015 (including library support, and variable declarations anywhere within a block etc); and some standard library functions are implemented: C++11/14/17 Features In VS 2015 RTM says that:
Visual Studio 2015 fully implements the C99 Standard Library, with the exception of any library features that depend on compiler features not yet supported by the Visual C++ compiler (for example, <tgmath.h>
is not implemented).
However as far as I know, much of the C99 - let alone C11 - compiler features remain unimplemented.