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

C语言实现栈的push函数时出现maxsize相关报错该如何解决?

问题原因分析
  • 核心错误来自#define宏定义的语法误用:C语言的#define是预处理器的文本替换指令,末尾不需要加语句结束符;,你在定义maxsize时额外加了分号,预处理器会把分号也当做宏值的一部分进行替换。
  • 替换后你的代码实际会变成以下非法语法:
    • 数组定义int s[maxsize];会被替换为int s[100;];,编译器识别到方括号内出现非法的分号,直接判定数组s定义失败,因此后续push函数中调用s会报undeclared错误。
    • 判满条件top == maxsize-1会被替换为top == 100;-1,语法完全不合法,触发括号不匹配的报错。
修复方案

把代码中第三行的宏定义末尾的分号删除即可,修改后代码如下:

#include <stdio.h>
#include <stdlib.h>

#define maxsize 100

int top=-1, item;
int s[maxsize];

void push()
{
    if (top == maxsize-1)
    {
        printf("Stack overflow\n");
        return;
    }

    top = top + 1;
    s[top] = item;
}

内容的提问来源于stack exchange,提问作者AKSHAT KANT THAKUR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:12:03