相关疑难解决方法(0)

"int size = 10;" 产生一个恒定的表达?

以下代码在gcc 4.8和Clang 3.2下编译:

int main()
{
  int size = 10;
  int arr[size];
}
Run Code Online (Sandbox Code Playgroud)

C++标准的8.3.4/1表示数组的大小必须是一个整数常量表达式,这size似乎不是.这是两个编译器中的错误,还是我错过了什么?

最新的VC++ CTP用这个有趣的消息拒绝代码:

error C2466: cannot allocate an array of constant size 0
Run Code Online (Sandbox Code Playgroud)

有趣的是,它似乎认为size是零.但至少它拒绝了代码.gcc和Clang应该不一样吗?

c++ arrays compile-time-constant variable-length-array c++11

13
推荐指数
1
解决办法
1209
查看次数

如何使用GNU g ++只编译标准C++?

GNU g ++编译器中有一些扩展,例如VLA(可变长度数组),即使这些功能不是C++标准.

因此,如果我只需要使用C++标准结构编译程序并避免这些额外的扩展,我可以使用GNU g ++吗?

有点像g++ test.cpp -std=onlyStandards

c++ g++

6
推荐指数
1
解决办法
242
查看次数

为什么我被允许在C中使用const限定变量作为数组大小?

当我运行以下代码时,它适用于C:

#include<stdio.h>

int main(void)
{

const int x=5;
char arr[x];
printf("%d",sizeof(arr));

}
Run Code Online (Sandbox Code Playgroud)

但是,不仅我之前读过const合格的变量不是real常量(这就是为什么它们不能在case条件下使用switch-case),但IBM的以下链接证实了(IBMLINK)并说:

 const int k = 10;
 int ary[k];     /* allowed in C++, not legal in C */
Run Code Online (Sandbox Code Playgroud)

为什么我允许const在C中使用合格变量作为数组大小而没有任何错误?

c arrays const constants lifetime

5
推荐指数
1
解决办法
680
查看次数