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