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