如何在一个静态库中检查并避免具有相同名称的功能?

时间:2018-09-29 09:41:58

标签: c

在C / C ++中创建具有相同功能名称和参数列表但在不同源文件中实现的静态库时,我感到困惑。

说,我在play()中声明了test.h函数,并且在play()test.c中都实现了test_old.c。以通常的方式创建同时包含test.ctest_old.c的库时,不会有错误。

但这会使人们在使用此库时感到困惑。谢谢。

1 个答案:

答案 0 :(得分:5)

在静态库中复制函数名称是非常的错误做法。不要这样做。

也就是说,您可以通过检查nm应用程序的输出来检查重复的定义。

$ nm libstest.a

test1.c.o:
0000000000000000 T bla

test2.c.o:
0000000000000000 T bla

以下命令列出了库中的重复功能:

$ nm libstest.a | grep -P "^[^\\s]+ T " | cut -d' ' -f3 | sort | uniq -d