我知道变量数组长度是编译器的扩展名,但是我允许转换为VLA吗?
下一个示例使用下一个命令编译好:
g++ -Wall -Wextra cast.cpp -ansi
代码如下:
#include <iostream>
struct A
{
int p;
char l;
};
int main( int argc, char* argv[] )
{
(void)argv;
const int length = argc;
void* msg = new int[ length ];
A (&arr)[ length ] = reinterpret_cast< A (&)[ length ] >( msg );
std::cout << arr[3].p << std::endl;
}
我最感兴趣的是c ++ 03,还有更新的c ++标准。
Gcc版本:
g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609