这是我的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;
}
Run Code Online (Sandbox Code Playgroud)
如果我删除包含"define"的行和包含的行,char astring[SIZE1];那么程序将很好地工作,但是内存中至少需要4个字节来存储数字500.
我希望看到的工作不起作用的是我删除这两行:
unsigned long SIZE2=500;
char astring2[SIZE2];
Run Code Online (Sandbox Code Playgroud)
当我编译上面的完整代码时,编译器给了我这些错误:
./teststring.c: In function 'main':
./teststring.c:6: error: expected ']' before ';' token
Run Code Online (Sandbox Code Playgroud)
这告诉我,它有SIZE1的问题.我也试过在SIZE1的值附近加上引号,但我仍然收到同样的错误.
有没有办法可以做到这一点,还是我被迫在内存中存储一个数字来使用它?
我不想在我的程序中随处输入相同的数字,所以请不要建议char astring[500]作为答案,但如果编译器在幕后为我编写,因为它将代码编译为可执行格式.
我的编译器是GCC 4.1.2版.
Alm*_*lmo 11
你的意思是
#define SIZE1 500
Run Code Online (Sandbox Code Playgroud)
在您的代码中,每当您使用SIZE1分号时都会插入.预处理程序命令#define不要以分号结尾.