Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c警告:在常量表达式中使用常量变量在c中是不标准的_C_Warnings - Fatal编程技术网

c警告:在常量表达式中使用常量变量在c中是不标准的

c警告:在常量表达式中使用常量变量在c中是不标准的,c,warnings,C,Warnings,我在尝试将数组初始化为常量大小时收到此警告 2170-D在常量表达式中使用常量变量在C中是不标准的 #file.h typedef struct { // LED Blink Pattern ..... } LEDSeq void addError(LEDSeq); void runLEDErrors(); .... #file.c const uint8_t MAXERRORS = 4; LEDSeq errors[MAXERRORS]; uint8_t errorsLen

我在尝试将数组初始化为常量大小时收到此警告

2170-D在常量表达式中使用常量变量在C中是不标准的

#file.h
typedef struct {
    // LED Blink Pattern
    .....
} LEDSeq

void addError(LEDSeq);
void runLEDErrors();
....

#file.c
const uint8_t MAXERRORS = 4;
LEDSeq errors[MAXERRORS];
uint8_t errorsLength = 0;
....

本质上,它是一段代码,将在运行时添加的LED错误序列上循环。我必须使用固定大小的数组,因为realloc在我的环境中不可用。这些代码都有效。我只是想知道为什么会出现这个错误。

A
const
对象在C中不是常量,而是只读对象。在文件范围内声明的数组(或任何具有静态存储持续时间的数组)必须有一个常量表达式作为其元素数

这是有效的:

#define MAXERRORS 4
LEDSeq errors[MAXERRORS];

如果是自动阵列var,从技术上讲,它将是一个VLA。C编译器允许它在全球范围内都是祝福和诅咒。代码是有效的C++(尽管它有点不雅C++)。