努力学习的馨姜 2022-08-16 17:23 采纳率: 100%
浏览 202
已结题

程序在链接文件时报错 ;显示函数"sum"的隐式声明在C99中无效

C :程序在链接文件时报错 ;显示函数"sum"的隐式声明在C99中无效

有三个文件

main.c
#include <stdio.h>
#include "sum.h"
int main()
{
int a = 1;
int b = 2;
int r = sum(a, b); // 调用sum
printf("%d", r);
return 0;
}

//函数定义

sum.c
#include <stdio.h>
int sum(int a, int b)
{
int re = a + b;
return re;
}

//函数声明

sum.h
int sum(int, int);


###### 运行结果及报错内容 


>>main.c执行结果
error: implicit declaration of function 'sum' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    int r = sum(a, b);

??为什么显示函数"sum"的隐式声明在C99中无效呢
我明明定义了sum函数,并且在main函数前引入了该头文件


###### 我的解答思路和尝试过的方法 


很神奇(因为我不太懂)

1. 刚开始时报的是这个错误

> Undefined symbols for architecture x86_64:
  "_sum", referenced from:
      _main in main-261b4d.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


2. 我尝试手动链接
gcc -c sum.c main.c
gcc sum.c main.c -o main.out
gcc ./main.out


3. 成功了


4. 但是 不知怎么(不懂)直接运行时(非手动),开始报了这个错误


5. >>main.c执行结果
error: implicit declaration of function 'sum' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    int r = sum(a, b);

**现在 手动操作失败,直接执行报上面的错误**

###### 我想要达到的结果
我想让main.c成功执行




  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2022-08-16 17:32
    关注

    换个名称试试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月24日
  • 已采纳回答 8月16日
  • 创建了问题 8月16日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助