C语言编译提示常量前缺';'':'或'(' #define处报错如何修复
问题原因及修复方案
核心报错根源
你定义的#define N 6是C语言预处理宏,预处理阶段会把代码中所有未被引号包裹的N直接替换为常量6。你后续函数声明、定义中都把形参命名为N,预处理后形参就变成了int const 6,属于语法错误,对应你遇到的「expected ';' , ':' or '(' before constant」报错。
其他存在的代码错误
fil_array函数中rand%21写法错误:rand是随机数生成函数,必须加括号调用才会返回随机整数值,直接写rand取到的是函数指针,计算结果不符合预期。
修复方案
- 方案1:修改宏名,避免和形参名冲突,比如将宏定义改为
#define ARR_SIZE 6,同时修改main函数中所有用到该宏的位置 - 方案2:修改所有函数的形参名,比如把
int const N改为int const len - 修正
rand调用写法为rand()%21
修复后完整可运行代码
#include <stdio.h> #include <time.h> #include <stdlib.h> #define N 6 // 形参名修改为len避免和宏N冲突 void fil_array(int* A,int const len); void print_array(int* A,int const len); int main() { int i,A[N]; srand(time(NULL)); fil_array(A, N); print_array(A, N); return 0; } void fil_array(int* A, int const len) { int i; for (i=0; i<len; i++) // 修正rand调用写法 A[i]=rand()%21; } void print_array(int* A, int const len) { int i; for (i=0; i<len; i++) printf("A[%d]=%d\n", i,A[i]); }
内容的提问来源于stack exchange,提问作者Pung
相关产品推荐
相关产品推荐

