如果它们具有相同的名称并且我无法修改其他文件,如何在其他C文件中使用具有相同名称的多个函数?

时间:2015-12-01 23:41:55

标签: c linker

我有一个生成包含单个函数void foo(float* n) {}的C文件的程序。这些文件在函数中具有不同的代码,但名称始终相同。我想创建一个C文件,依次运行它们但是当我尝试包含多个时,我得到一个重新定义错误(来自链接器?)。我无法更改生成的C文件(否则我只会更改函数名称)。生成的文件都有不同的唯一名称,即使这些函数都有通用名称,我只需要一次使用一个函数(如果有任何类型的释放操作,如#undef用于宏)。

1 个答案:

答案 0 :(得分:6)

您可以使用预处理器在编译时更改每个文件的函数名称,例如

$ gcc -Wall -Dfoo=foo_1 -c bar1.c
$ gcc -Wall -Dfoo=foo_2 -c bar2.c
$ gcc -Wall -Dfoo=foo_3 -c bar3.c
$ gcc -Wall main.c bar1.o bar2.o bar3.o

这样您就可以从foo_1()调用函数foo_2()foo_3()main()