有些人在这里评论我的C代码,说我应该使用常量作为循环计数器,而不是硬编写它们。我同意他们,因为这是我编写Java代码时的做法,但是当我尝试在数组声明和循环条件中使用常量时,我会抛出编译时错误。
要在C中声明常量,语法为#define NAME value
。
在我的代码中,我有两个常量,BUFFER
是文件读缓冲区,PACKED
是输出数组大小。
我使用BUFFER
初始化char inputBuffer[BUFFER];
作为全局变量,但是当我尝试使用PACKED
时
#define PACKED 7; // this line is in the header of file, just below preprocessors
int packedCount;
char inputPack[PACKED]; //compression storage
for (packedCount=0; packedCount<= PACKED; packedCount++){
我error: expected ‘]’ before ‘;’ token
和char inputPack[PACKED]
来了。{
循环初始化行中的error: expected expression before ‘;’ token
。当我用7替换PACKED
时,两个错误都消失了。
答案 0 :(得分:3)
您显然不会完全按原样在源文件中发布代码。
至少,您在char inputPack[PACKED]
之后错过了分号。
我强烈怀疑你的真实来源在你的宏声明结尾处有一个分号,这会导致错误。宏定义不应以分号结束。
答案 1 :(得分:2)
在;
inputPack[PACKED]
答案 2 :(得分:1)
尝试使用PACKED以外的其他内容,例如: PACKEDSIZE。它可以是你的编译器使用PACKED做其他事情(例如与struct packing相关)。另外,正如其他答案所提到的,你缺少一个;