C常量抛出编译时错误

时间:2011-03-05 13:33:55

标签: c compiler-errors constants

有些人在这里评论我的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 ‘;’ tokenchar inputPack[PACKED]来了。{  循环初始化行中的error: expected expression before ‘;’ token。当我用7替换PACKED时,两个错误都消失了。

3 个答案:

答案 0 :(得分:3)

您显然不会完全按原样在源文件中发布代码。

至少,您在char inputPack[PACKED]之后错过了分号。

我强烈怀疑你的真实来源在你的宏声明结尾处有一个分号,这会导致错误。宏定义不应以分号结束。

答案 1 :(得分:2)

;

之后缺少inputPack[PACKED]

答案 2 :(得分:1)

尝试使用PACKED以外的其他内容,例如: PACKEDSIZE。它可以是你的编译器使用PACKED做其他事情(例如与struct packing相关)。另外,正如其他答案所提到的,你缺少一个;