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

程序在链接文件时报错 ;显示函数"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 求Houdini使用行家,付费。价格面议。
  • ¥15 AttributeError: 'EasyDict' object has no attribute 'BACKUP_DB_INFO'
  • ¥15 前端高拍仪调用问题报错
  • ¥15 想用octave解决这个数学问题
  • ¥15 Centos新建的临时ip无法上网,如何解决?
  • ¥15 海康威视如何实现客户端软件对设备语音请求的处理。
  • ¥15 支付宝h5参数如何实现跳转
  • ¥15 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
  • ¥15 前后端分离的学习疑问?