一些人在这里评论了我的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
时,这两个错误都消失了。 最佳答案
您显然没有完全按照源文件中显示的代码来发布代码。
至少,您在char inputPack[PACKED]
之后缺少分号。
我强烈怀疑您的真实源在宏声明的末尾有分号,这将导致错误。宏定义不应以分号结尾。
关于c - C常数引发编译时错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5204123/