我正在尝试生成调用图,用它来找出所有可能执行特定函数的执行路径(这样我就不必手动计算出所有路径,因为有很多路径可以导致这个功能).例如:
path 1: A -> B -> C -> D
path 2: A -> B -> X -> Y -> D
path 3: A -> G -> M -> N -> O -> P -> S -> D
...
path n: ...
Run Code Online (Sandbox Code Playgroud)
我已经尝试过Codeviz和Doxygen,不知怎的,两个结果只显示目标函数的被调用者D.在我的例子中,D是一个类的成员函数,其对象将被包装在智能指针中.客户端将始终通过工厂获取智能指针对象以调用D.
有谁知道如何实现这一目标?
我正在编写一个小型的C++程序,用于娱乐和扩展我的C++技能.由于其范围相对较小,我还计划通过使该程序支持Windows和Linux来尝试跨平台开发.
我认为我的C++熟练程度介于休闲和中级之间:OO,一些模板和设计模式,之前使用STL并试图更详细地研究它......但是,在编写这个小程序时,我发现我越深入挖掘C++,我就越痛苦,特别是当我开始理解和处理不同平台/供应商实现之间的差异时.
使用像Qt,ACE,Boost这样的跨平台框架似乎有助于加快开发速度,从而使生活更轻松,但我担心这是否会超出我的目的.如果有任何进行C++跨平台开发的"最佳实践",有人可以给出一些建议吗?谢谢.
到目前为止,我一直在使用SVN,现在需要从开发人员的角度快速获取ClearCase.这有什么好的资源吗?谢谢.
- 加上 -
SV的概念/术语(即存储库,工作副本,主干,分支,标签,结账,提交,更新,还原)与CC之间是否有映射?根据初步阅读,我提出以下内容.
存储库=> VOB?
工作副本=>快照视图?
Trunk => ??
分支=>整合流?发展流?
标签=>标签?基线?
从repo签出作为工作副本=>从VOB签出作为快照视图?
从工作副本提交到repo =>从快照视图签入到VOB?
更新=> Rebase?
恢复=> ??
?? =>交付
AFAIK CC有自己独特的概念,因此我无法告诉最近的地图.
是否可以在这些场景中处理异常:
由于使用Singleton模式实现记录器的泛滥示例,我刚刚为我的程序编写了一个简单的C++记录器.但是,由于已知着名的双重检查锁定方法不再是线程安全的,我想知道我是否应该:
1)忘记在这种情况下使用Singleton模式?
2)即使不安全,仍继续使用双重检查锁定?
3)对每次访问公共接口使用昂贵的纯同步锁定方法?
有什么建议?
道歉,因为目前我没有环境来试验并自己解决以下问题:
1)假设我有四个库文件:libmylib_super.a和libmylib_super.so,mylib_dumb.a和mylib_dumb.so.在指定要链接的库时,以下方法之间有何区别:
A)-l:libmylib_super.a
B)-llibmylib_super
C)-lmylib_super
D)-lmylib_dumb
2)-static来自手册页的定义:
在支持动态链接的系统上,这会阻止与共享库的链接.在其他系统上,此选项无效.
此链接器选项是否与问题#1有关?或者......他们会互相干扰吗?
谢谢.
---编辑2009-12-28 ---
我只是通过链接到Boost date_time库来获得我的环境并尝试一下.说我有三个库文件:libboost_date_time-mt-d.a,libboost_date_time-mt-d.so.1.41.0,libboost_date_time-mt-d.so -> libboost_date_time-mt-d.so.1.41.0(符号链接).
A.1)-l:libboost_date_time-mt-d.a==>链接OK,即使没有库文件,二进制文件仍可正常工作.
A.2)-l:libboost_date_time-mt-d.a带有-static==> 链接错误 /usr/bin/ld: cannot find -lm
C.1)-lboost_date_time-mt-d==>链接OK,二进制有效但需要共享库文件.
C.2)-lboost_date_time-mt-d带-static==> 链接错误 /usr/bin/ld: cannot find -lm
关于A.2和C.2中的错误的任何想法?
此外,在C.1中运行程序时,它似乎搜索共享库文件的名称,libboost_date_time-mt-d.so.1.41.0但不是libboost_date_time-mt-d.so.如果程序在没有库的确切版本的系统上运行,那会不会很不方便?在使用共享库时,处理该版本的实用方法是什么?
我确实使用了从互联网上找到的这种链接片段,它确实有用.现在我想对这个主题有更多的了解,即如果我的C++代码将由非C++代码导出/链接,我应该注意什么.有人能指出我对此有用的任何资源吗?谢谢.