我有一个七段减速的简单代码:
#include<avr/io.h>
#include<util/delay.h>
int dp=1<<0;
int a=1<<1;
int b=1<<2;
int c=1<<3;
int d=1<<4;
int e=1<<5;
int f=1<<6;
int g=1<<7;
int ss[]={
a|b|c|d|e|f,
b|c,
a|b|g|e|d,
a|b|g|c|d,
f|g|b|c,
a|f|g|c|d,
a|f|g|c|d|e,
a|b|c,
a|b|c|d|e|f|g,
a|b|c|d|f|g,
0x00
};
int main()
{
while(1){}
}
但是当我尝试从此.hex
代码生成.c
时,这给了我错误:
这里是错误:
main.c:12: error: initializer element is not constant
main.c:12: error: (near initialization for 'ss[0]')
...
对于所有元素相同。.
执行此操作的一种方法是通过将其更改为:确保它们为常量(在编译时可用)。>#define dp 0x01
#define a 0x02
#define b 0x04
#define c 0x08
#define d 0x10
#define e 0x20
#define f 0x40
#define g 0x80
而不是变量集使用枚举。例如