我似乎无法找出我的代码有什么问题,这是用C语言编写的。我不断得到各种各样的错误,我几乎肯定不是错误。无论如何这里是代码:
int numKeyWords = 6,
idMaxLength = 8,
maxLineLength = 80,
numSymbols = 26;
char blankID[] = " ";
enum symbol{GREATEQ, LESSEQ, EQUAL, NOTEQ, GREAT, LESS, PLUS, MINUS, TIMES, DIVIDE,
LBRACE, RBRACE, LPAREN, RPAREN, LBRACK, RBRACK, SEMICOLON, COMMA,
ASSIGN, WHILE, DO, END, IF, THEN, ELSE, NUMBER, IDENT, BAD};
enum symbol SY;
enum symbol symbols[numKeyWords];
enum symbol specialSymbols[UCHAR_MAX+1];
typedef char alpha[idMaxLength+1];
alpha idname;
char chara;
char line[maxLineLength];
int charCounter;
int lineCounter;
int charLineCounter;
alpha keyWords[numKeyWords];
int isEOF = FALSE;
alpha symbolNames[numSymbols];
我特意在这些方面遇到错误:
...
enum symbol symbols[numKeyWords];
....
typedef char alpha[idMaxLength+1];
...
char line[maxLineLength];
...
alpha keyWords[numKeyWords];
...
alpha symbolNames[numSymbols];
...
说出一些影响:
错误:在文件范围内修改了'VARIABLE'
这适用于上述每一行。为什么会发生这种情况?
答案 0 :(得分:4)
具有静态存储持续时间的数组的大小不能是变量;编译器需要能够弄清楚它在编译时的大小。将数组大小变量更改为#define
s(如果您使用的是C ++,则为const
s)。 (文件范围内的所有变量都具有静态存储持续时间)。
答案 1 :(得分:1)
将每个int常量放入#define
语句中。必须在编译时知道固定长度数组的大小。