在多个c源文件中具有相同的功能
我很难找到为什么我不能在几个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文件是私有的.因此,它们不会像您当前那样在链接阶段导致链接错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |