鱼C论坛

 找回密码
 立即注册
查看: 5573|回复: 14

[已解决]s1e32链接属性问题

[复制链接]
发表于 2022-4-15 16:42:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第一个文件:
#include <stdio.h>

void a(void);
void b(void);
void c(void);

int count;

int main(void)
{
        a();
        b();
        c();
        b();
       
        printf("小郭今天一共被抱了%d次!\n", count);
       
        return 0;
}

第二个文件:
extern int count;

void a(void)
{
        count++;
}

请问这俩个文件如何在DevC++中成功运行,现今以创一个新的项目,里面分别分别包含俩个文件的代码但是有以下报错,然后跳出貌似是devC++的源代码
C:\Users\12075\Desktop\FishC\作用域和连接属性\text.4.o        text.4.c:(.text+0x0): multiple definition of `a'
C:\Users\12075\Desktop\FishC\作用域和连接属性\text3.o        text3.c:(.text+0x0): first defined here
C:\Users\12075\Desktop\FishC\作用域和连接属性\collect2.exe        [Error] ld returned 1 exit status
C:\Users\12075\Desktop\FishC\作用域和连接属性\Makefile.win        recipe for target 'Project1.exe' failed
最佳答案
2022-4-15 19:43:28
  1. #include <stdio.h>
  2. #include "b.c"

  3. void a(void);


  4. int count;

  5. int main(void)
  6. {
  7.         a();
  8. count++;
  9.       
  10.         printf("小郭今天一共被抱了%d次!\n", count);
  11.       
  12.         return 0;
  13. }
复制代码


b.c
  1. extern int count;

  2. void a(void)
  3. {
  4.         count++;
  5. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-15 16:44:31 | 显示全部楼层
另外,已经试过把abc的声明另外创一个文件包含在同一个文件夹,也试过在第一个主文件夹里面加入#include < b.c >,还是报出相同的错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 16:49:18 | 显示全部楼层
第一个文件前面改成
  1. extern void a(void);
  2. extern void b(void);
  3. extern void c(void);
复制代码

另外你只有a()有定义?b()和c()都没定义?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 16:49:42 | 显示全部楼层
主文件加载别的文件。
参考:
https://blog.csdn.net/qq_27664167/article/details/82859852
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 19:23:25 | 显示全部楼层
风车呼呼呼 发表于 2022-4-15 16:49
第一个文件前面改成

另外你只有a()有定义?b()和c()都没定义?

有哇,我前面就有定义了,我现在改成这个还是报错,大佬帮我看看
第一个文件
#include <stdio.h>

extern void a(void);
extern void b(void);
extern void c(void);

extern int count;

int main(void)
{
        a();
        b();
        c();
        b();
       
        printf("小郭今天一共被抱了%d次!\n", count);
       
        return 0;
}
第二个文件
int count;

void a(void)
{
        count++;
}
第三个文件
void a();
void b();
void c();

void a()
{
        count++;
}

void b()
{
        count++;
  }
void c()
{
        count++;
        }

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 19:24:14 | 显示全部楼层
ba21 发表于 2022-4-15 16:49
主文件加载别的文件。
参考:
https://blog.csdn.net/qq_27664167/article/details/82859852

这个我有查到过,还是搞不定
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 19:29:29 From FishC Mobile | 显示全部楼层
一般包含头文件,你怎么包含源文件啊?b.c这个文件是不是和你的第一个文件在一个目录里,在一个目录就用#include "b.c"。推荐你直接把b.c的代码放在头文件b.h里。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 19:31:21 | 显示全部楼层
znuxc 发表于 2022-4-15 19:23
有哇,我前面就有定义了,我现在改成这个还是报错,大佬帮我看看
第一个文件
#include

你这a()怎么在第二个和第三个文件都写了定义啊。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 19:31:24 From FishC Mobile | 显示全部楼层
znuxc 发表于 2022-4-15 19:23
有哇,我前面就有定义了,我现在改成这个还是报错,大佬帮我看看
第一个文件
#include

你把这些文件名写详细点,文件比较多的话尽量创建一个工程来编译,把那些文件都放在工程里。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 19:32:27 From FishC Mobile | 显示全部楼层
你这个a函数还重载了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-15 19:43:28 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. #include "b.c"

  3. void a(void);


  4. int count;

  5. int main(void)
  6. {
  7.         a();
  8. count++;
  9.       
  10.         printf("小郭今天一共被抱了%d次!\n", count);
  11.       
  12.         return 0;
  13. }
复制代码


b.c
  1. extern int count;

  2. void a(void)
  3. {
  4.         count++;
  5. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 20:43:08 | 显示全部楼层

刚刚打的跟你的一模一样,还是报错,会不会是创建工程的时候出现了问题,能细说下创建工程的流程吗,谢谢大佬
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 20:43:58 | 显示全部楼层
zzxhh628 发表于 2022-4-15 19:32
你这个a函数还重载了?

哦哦,我已经改掉啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 20:44:28 | 显示全部楼层
风车呼呼呼 发表于 2022-4-15 19:31
你这a()怎么在第二个和第三个文件都写了定义啊。。。

改了改了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-15 20:51:09 | 显示全部楼层

搞懂了搞懂了,建立项目的时候错了,谢谢大佬!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 05:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表