一个函数方法里如何调用两个 c 文件里的相同标识符的函数?

tctc4869 1月前 18

初涉 c 语言,想要一些面向对象的编写代码的体验。不让 c 语言工程模块分工的处理更麻烦

最简单的,已知有两个 c 文件,两个 c 文件里有相同标识符名称的函数,在 main 函数调用该两个 c 文件里的相同标识符的函数,不改变两个 c 文件该相同标识符函数的名称的情况下,有什么方法可以做到?

最新回复 (13)
  • OliverDD 29天前
    引用 2
    include 不同头文件?
  • codehz 29天前
    引用 3
    原则上就会冲突的,如果不能改源码,那就 objcopy 的时候改掉。。。
    所以你现在知道为什么 c++要做名字粉碎了吗
  • 楼主 tctc4869 29天前
    引用 4
    @OliverDD 头文件方式的话,两个 c 文件的相同函数名编译时,会爆出冲突错误把?
  • raysonx 29天前
    引用 5
    不能,会出现链接错误。
    有一种迂回的办法是链接到不同的动态库里去,再用 dlopen 或者 LoadLibrary 动态调用。
  • anytk 29天前
    引用 6
    c 文件同名函数都标注 static, 声明结构体成员包含函数指针指向函数,然后定义结构体常量暴露接口,main 函数再用结构体指针来引用不同的结构体就行了。
  • Mithril 29天前
    引用 7
    再弄俩文件包成不同名字的导出函数,封到俩动态库里就行了。
  • ch2 29天前
    引用 8
    C++的 namespace 就是干这个用的
  • iceheart 29天前
    引用 9
    C 里不能这么搞,得换方案实现你的需求
  • 楼主 tctc4869 29天前
    引用 10
    @iceheart 模块分工的问题
  • 楼主 tctc4869 29天前
    引用 11
    @iceheart 其他的方案有哪些?
  • yolee599 29天前
    引用 12
    c 语言不能有两个相同名字的函数,即使参数不同,文件不同,也不行,编译直接报错。你用 static 限定只能在当前文件使用就是可以的
  • zbianbiaos 29天前
    引用 13
    结构体封函数指针
    typedef struct
    {
    void (*func1)(void);
    void (*func2)(const char *, int);
    ......
    } funcs_export_t;
  • adinxu 29天前
    引用 14
    我个人的感觉是,每个语言都有其擅长的事情,去做不擅长的事情那就是事倍功半了,,,
  • 游客
    15
返回