这是我的C代码:

#include "stdio.h"
#define SIZE1 500;
int main(int argc,char* argv[]){
    unsigned long SIZE2=500;
    char astring2[SIZE2];
    char astring[SIZE1];
    return 0;
}


如果删除包含“ define”的行和包含char astring[SIZE1];的行,则该程序将正常运行,但是至少需要4个字节的内存才能存储数字500。

我想看到不起作用的工作是我删除了这两行:

unsigned long SIZE2=500;
char astring2[SIZE2];


当我编译上面的完整代码时,编译器给我这些错误:

./teststring.c: In function 'main':
./teststring.c:6: error: expected ']' before ';' token


这向我表明SIZE1存在问题。
我也尝试在SIZE1的值两边加上引号,但仍然收到相同的错误。

有什么方法可以执行此操作,还是我必须将一个数字存储在内存中才能使用它?

我不想在程序中需要的任何地方不断键入相同的数字,所以请不要建议char astring[500]作为答案,但是如果编译器在编译时为我在幕后这样做,那就很好了。将代码转换为可执行格式。

我的编译器是GCC版本4.1.2。

最佳答案

你的意思是

#define SIZE1 500


在您的代码中,每当您使用SIZE1时,都会插入一个分号。诸如#define之类的预处理器命令不以分号结尾。

10-04 18:34