这是我的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
之类的预处理器命令不以分号结尾。