一次,写代码时偶然发现的问题,当时代码
#include<stdio.h>
#define chang 50
#define kuan 20
char map[chang][kuan] = {0};
int ch;
int ku;
char *tou ;
char *sheng_ti[chang*kuan];
ch_1 = chang / 2;
ku = kuan / 2;
tou = &map[ch][ku];
void main()
{
}
这时编译器显示错误----------初始值设定项不是常量,有时也会显示错误为---------表达式必须为常量
解决的办法就是三个赋值语句移至函数内部
原因
c编译器不支持函数外动态声明变量和分配空间,