加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在多个c源文件中具有相同的功能

发布时间:2020-12-16 09:49:13 所属栏目:百科 来源:网络整理
导读:我很难找到为什么我不能在几个C源文件中拥有相同的功能. 我一直以为我不能访问另一个源文件中的函数,只要它们没有在头文件中声明. 让我们假设我有以下内容: main.c – 包括thread1.h thread2.h thread1.h – 声明例如void * thread1(); thread1.c – 定义vo
我很难找到为什么我不能在几个C源文件中拥有相同的功能.
我一直以为我不能访问另一个源文件中的函数,只要它们没有在头文件中声明.

让我们假设我有以下内容:

main.c – >包括thread1.h& thread2.h

thread1.h – >声明例如void * thread1();

thread1.c – >定义void * thread1(){}并定义void lock(){}

thread2.h – >声明例如void * thread2();

thread2.c – >定义void * thread2(){}并定义void lock(){}

现在gcc告诉我,我不能那样做!

gcc -pthread -Wall -o executable main.c thread1.c thread2.c

错误:`lock’的多重定义

所以现在我的问题是:
我怎样才能完成我想要的?

我不认为这是不可能的.否则,所有许多C库中可用的所有C源代码都需要是唯一的. (没有意义,或者不会?)

所以我在3小时前想到自己必须有一个解决方案.我必须在这里遗漏一些东西.

好吧,我试过谷歌搜索…但不知何故,我的谷歌技能这次没有帮助我.
真的没办法做到这一点吗?或者我只是愚蠢地寻找它?

提前致谢,

LEEP

解决方法

你需要将函数lock()设置为静态.

static void lock() {..}

原因是具有静态的函数在“翻译单元”之外是不可见的.在其他(可能是错误的)单词中,静态函数对* .c文件是私有的.因此,它们不会像您当前那样在链接阶段导致链接错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读