znuxc 发表于 2022-4-15 16:42:20

s1e32链接属性问题

第一个文件:
#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        ld returned 1 exit status
C:\Users\12075\Desktop\FishC\作用域和连接属性\Makefile.win        recipe for target 'Project1.exe' failed

znuxc 发表于 2022-4-15 16:44:31

另外,已经试过把abc的声明另外创一个文件包含在同一个文件夹,也试过在第一个主文件夹里面加入#include < b.c >,还是报出相同的错误

风车呼呼呼 发表于 2022-4-15 16:49:18

第一个文件前面改成
extern void a(void);
extern void b(void);
extern void c(void);
另外你只有a()有定义?b()和c()都没定义?

ba21 发表于 2022-4-15 16:49:42

主文件加载别的文件。
参考:
https://blog.csdn.net/qq_27664167/article/details/82859852

znuxc 发表于 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++;
        }

znuxc 发表于 2022-4-15 19:24:14

ba21 发表于 2022-4-15 16:49
主文件加载别的文件。
参考:
https://blog.csdn.net/qq_27664167/article/details/82859852

这个我有查到过,还是搞不定{:5_100:}

zzxhh628 发表于 2022-4-15 19:29:29

一般包含头文件,你怎么包含源文件啊?b.c这个文件是不是和你的第一个文件在一个目录里,在一个目录就用#include "b.c"。推荐你直接把b.c的代码放在头文件b.h里。

风车呼呼呼 发表于 2022-4-15 19:31:21

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


你这a()怎么在第二个和第三个文件都写了定义啊。。。

zzxhh628 发表于 2022-4-15 19:31:24

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


你把这些文件名写详细点,文件比较多的话尽量创建一个工程来编译,把那些文件都放在工程里。

zzxhh628 发表于 2022-4-15 19:32:27

你这个a函数还重载了?

ba21 发表于 2022-4-15 19:43:28

#include <stdio.h>
#include "b.c"

void a(void);


int count;

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

b.c
extern int count;

void a(void)
{
      count++;
}

znuxc 发表于 2022-4-15 20:43:08

ba21 发表于 2022-4-15 19:43
b.c

刚刚打的跟你的一模一样,还是报错,会不会是创建工程的时候出现了问题,能细说下创建工程的流程吗,谢谢大佬

znuxc 发表于 2022-4-15 20:43:58

zzxhh628 发表于 2022-4-15 19:32
你这个a函数还重载了?

哦哦,我已经改掉啦

znuxc 发表于 2022-4-15 20:44:28

风车呼呼呼 发表于 2022-4-15 19:31
你这a()怎么在第二个和第三个文件都写了定义啊。。。

改了改了{:10_266:}

znuxc 发表于 2022-4-15 20:51:09

ba21 发表于 2022-4-15 19:43
b.c

搞懂了搞懂了,建立项目的时候错了,谢谢大佬!!!
页: [1]
查看完整版本: s1e32链接属性问题