在C / C ++中创建具有相同功能名称和参数列表但在不同源文件中实现的静态库时,我感到困惑。
说,我在play()
中声明了test.h
函数,并且在play()
和test.c
中都实现了test_old.c
。以通常的方式创建同时包含test.c
和test_old.c
的库时,不会有错误。
但这会使人们在使用此库时感到困惑。谢谢。
答案 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