You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:24:04