我可以在程序中使用常数而不将其存储在内存中吗?

Mik*_*ike 2 c gcc const

这是我的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不要以分号结尾.

  • 是的,在它让你接受之前有一段延迟.不着急 (2认同)