在C/C++中创建具有相同功能名称和参数列表但在不同源文件中实现的静态库时,我很困惑.
我说,我有play()funtion宣布test.h,并play()在这两个实施test.c和test_old.c.创建包含两者test.c且test_old.c通常包含的库时,不会出现错误.
但是这会让人们在使用这个库时感到困惑.如何检测这个复制的实现?谢谢.
在静态库中复制函数名称是非常糟糕的做法.不要这样做.
也就是说,您可以通过检查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)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |