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

 Steven 发布于 2023-02-13 11:00

我很难找到为什么我不能在几个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

1 个回答
  • 您需要使用的功能lock()static.

    static void lock() {..}
    

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

    2023-02-13 11:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有