数组绑定实际上不是']'标记之前的整数常量

问题描述 投票:0回答:2

我正在尝试创建一个数组,其大小在编译时已知。

const uint8_t a[2] = {0, 127}; // Fine
const uint8_t aRange = a[1] - a[0]; // Fine
double sums[aRange]; //Fails

但是用gcc用gcc却失败了>

错误:数组绑定不是']'标记之前的整数常量。作为解决方法,我打算使用宏变量。但想知道其背后是否有任何逻辑。有this答案,这是最相关的。但是,根据答案,它应该可以工作。

我正在尝试创建一个数组,该数组的大小在编译时已知。 const uint8_t a [2] = {0,127}; //好的const uint8_t aRange = a [1]-a [0]; //精细的双和[aRange]; //失败,但是...

c
2个回答
1
投票

aRange是一个常量整数,但不是整数常量。英语不是一种有趣的语言吗?


0
投票

正如其他人指出的,尽管__STDC_NO_VLA__aRange,但编译器在编译时不知道其值,因此它不允许您这样做。

© www.soinside.com 2019 - 2024. All rights reserved.