c警告:在常量表达式中使用常量变量在c中是不标准的
我在尝试将数组初始化为常量大小时收到此警告 2170-D在常量表达式中使用常量变量在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
#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++)。