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

Hax*_*raZ 2 c

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

我说,我有play()funtion宣布test.h,并play()在这两个实施test.ctest_old.c.创建包含两者test.ctest_old.c通常包含的库时,不会出现错误.

但是这会让人们在使用这个库时感到困惑.如何检测这个复制的实现?谢谢.

Ric*_*ard 5

在静态库中复制函数名称是非常糟糕的做法.不要这样做.

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

$ nm libstest.a

test1.c.o:
0000000000000000 T bla

test2.c.o:
0000000000000000 T bla
Run Code Online (Sandbox Code Playgroud)

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

$ nm libstest.a | grep -P "^[^\\s]+ T " | cut -d' ' -f3 | sort | uniq -d
Run Code Online (Sandbox Code Playgroud)