初涉 c 语言,想要一些面向对象的编写代码的体验。不让 c 语言工程模块分工的处理更麻烦
最简单的,已知有两个 c 文件,两个 c 文件里有相同标识符名称的函数,在 main 函数调用该两个 c 文件里的相同标识符的函数,不改变两个 c 文件该相同标识符函数的名称的情况下,有什么方法可以做到?
1
OliverDD 2021-04-09 08:59:38 +08:00
include 不同头文件?
|
2
codehz 2021-04-09 08:59:40 +08:00 via Android
原则上就会冲突的,如果不能改源码,那就 objcopy 的时候改掉。。。
所以你现在知道为什么 c++要做名字粉碎了吗 |
4
raysonx 2021-04-09 09:09:33 +08:00 via iPad
不能,会出现链接错误。
有一种迂回的办法是链接到不同的动态库里去,再用 dlopen 或者 LoadLibrary 动态调用。 |
5
anytk 2021-04-09 09:09:36 +08:00
c 文件同名函数都标注 static, 声明结构体成员包含函数指针指向函数,然后定义结构体常量暴露接口,main 函数再用结构体指针来引用不同的结构体就行了。
|
6
Mithril 2021-04-09 09:10:00 +08:00 via iPhone
再弄俩文件包成不同名字的导出函数,封到俩动态库里就行了。
|
7
ch2 2021-04-09 09:12:57 +08:00 via iPhone 1
C++的 namespace 就是干这个用的
|
8
iceheart 2021-04-09 09:25:54 +08:00 via Android
C 里不能这么搞,得换方案实现你的需求
|
11
yolee599 2021-04-09 09:37:52 +08:00
c 语言不能有两个相同名字的函数,即使参数不同,文件不同,也不行,编译直接报错。你用 static 限定只能在当前文件使用就是可以的
|
12
zbianbiaos 2021-04-09 09:42:33 +08:00
结构体封函数指针
typedef struct { void (*func1)(void); void (*func2)(const char *, int); ...... } funcs_export_t; |
13
adinxu 2021-04-09 10:24:33 +08:00
我个人的感觉是,每个语言都有其擅长的事情,去做不擅长的事情那就是事倍功半了,,,
|