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

C语言宏定义报错:'a'和'b'未声明,求解决方案

解决C语言编译错误:'a'和'b' undeclared as first use in this function

错误根源

你的sum宏定义存在语法错误:#define sum (a,b) (printf("%i",a + b));中,sum与参数列表(a,b)之间多了一个空格。

C语言的带参数宏要求宏名和参数列表必须紧挨着,不能有空格。这个空格会让预处理器把sum解析成无参数宏,宏内容是(a,b) (printf("%i",a + b));。当你调用sum(100,150)时,预处理器替换后会变成:

(a,b) (printf("%i",a + b));(100,150);

这里的a和b完全没有被替换成传入的100和150,编译器自然会报错说它们未声明。

修正方案

  1. 去掉sum与(a,b)之间的空格
  2. 建议去掉宏末尾的分号(调用时已经加了分号,避免生成多余的空语句)

修正后的宏定义:

#define sum(a,b) printf("%i", a + b)

完整修正代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Name "JSDJSDJ"
#define Age 3000
#define sum(a,b) printf("%i", a + b)

int main ()
{
    sum(100,150);
    printf("%i", Age);

    return 0;
}

关于课程代码的疑问

课程中的同款代码能运行,大概率是因为课程里的宏定义是正确的(没有多余空格),你在抄写时不小心添加了空格,导致语法错误。

内容的提问来源于stack exchange,提问作者AbsoluteNothing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:20:32