一些人在这里评论了我的C代码,说我应该使用常量作为循环计数器,而不是硬编写它们。我同意他们的观点,因为这是我编写Java代码时的惯例,但是当我尝试在数组声明和循环条件中使用常量时出现编译时错误。

要在C中声明一个常量,语法为#define NAME value

在我的代码中,我有两个常量,BUFFER是文件读取缓冲区,PACKED是输出数组大小。

我使用BUFFERchar 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/

10-14 10:32