NS的源码底层是C++,采用了C++/Tcl分裂对象模型,架构完善,堪称OOP编程的典范。但是NS源码体系庞大,源文件有2千多个,阅读起来不是特别方便,我推荐使用SourceInsight3.5。具体的配置如下:

1. 下载安装SourceInsight,在这里我就不提供了,大家自己去搜吧。SourceInsight的正版单机价格是2500元人民币,呵呵,小小3M多的程序有这么大价值,其功能可见一斑。

2. 安装后,我们先进行一些配置,以便使得SourceInsight能够正确得识别NS的源文件类型,也就是添加.cc与.tcl文件类型到SourceInsight中,否则要么不能完全导入NS的源文件(只能加入默认识别的.c和.h文件)。

2.1 添加*.cc文件类型:打开options->preference,选择languages选项卡,这里能看到列出的已知语言种类,选中C++ Language,然后单击靠近右下方的“Doc Types...”按钮,在弹出窗口中的“File Filter”一栏中加入文件类型“*.cc”,注意与前面最后一个用分号隔开。

2.2 添加*.tcl文件类型:SourceInsight中没有TCL语言类型,曾经有人说把TCL语言用Perl来解释,这么做虽然有点用,因为这两种脚本语言的关键字类似,但毕竟不伦不类的,而且也无法正确解析。所以正确的做法是使SourceInsight认识TCL脚本语言。同上打开options->preference,选择languages选项卡,这里发现列表中没有TCL语言,于是从SourceInsight主页上下载一个TCL语言安装包,这里也有一份可以直接下载。http://download1.csdn.net/down3/20070615/15185631347.CLF languages选项卡上的Import按钮,然后导入TCL语言支持文件,确定之后你会发现列表中有了TCL语言,选中它,然后再单击“Doc Types...”按钮,在弹出的对话框中单击右上角的AddType按钮,输入你TCL文件类型,随便起,比如“Tcl Script”,确定。然后你就可以在左侧的DocumentType下拉菜单中找到你刚刚加入的Tcl文件类型“Tcl Script”,在“File Filter”一栏中输入“*.tcl”,同时勾选"Including when adding into projects",并在Parsing组合框里,把Language由none改成Tcl就可以了。

下载后,选择

至此,SourceInsight已经能够正确的识别.cc与.tcl文件了。

3. 新建工程。选择project->new project,在弹出的对话框中输入工程名称,保存位置随便你自己了。确定之后会让你选择工程源文件目录,选择之后ns-allinone-2.xx后进入文件添加界面。这里应该在右侧的窗口中选择如下几个文件夹:ns-2.xx tcl-8.x.x tk-8.x.x tcl-1.xx,注意千万不要把Nam也包含进来,因为Nam和NS是不同的工程,两个程序。选中这几个文件夹后,点击右侧的“Add Tree”按钮,一番硬盘狂转之后应该会告诉你添加了2000个左右的文件。OK,大功告成。

4. 分析工程源文件。SourceInsight会自动在后台分析工程的所有源文件,所以在用它查看一个新工程的源码时,跳转、自动显示可能会有问题(比如告诉你没有定义或者没有实现等等),原因是因为没有分析完毕。所以新建一个工程后,应该点击project->Rebuild Porject,在弹出的对话框中选择Re-parse all source files,单击OK,于是又是一阵硬盘狂转之后,终成正果。

[@more@]

最新文章

  1. Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析
  2. nRF51822之pstorage使用摘要
  3. WCF学习心得----(五)生成客户端
  4. CodeIgniter的缓存设置
  5. 使用c#获取access中所有表的表名与内容
  6. 截图工具 Snagit
  7. Linux常用脚本命令总结
  8. 201521123016《Java程序设计》第12周学习总结
  9. 自学HTML5难 我们应该怎么做
  10. Percona监控MySQL模板详解
  11. OpenCV x64 vs2010 下打开摄像头录制视频写成avi(代码为转载)
  12. JSP & EL & JSTL
  13. [Swift]LeetCode172. 阶乘后的零 | Factorial Trailing Zeroes
  14. cas单点登录-https的配置(一)
  15. elasticsearch(5) 请求体搜索
  16. mysql中使用存储过程方法中的注意事项
  17. js中函数对象创建的总结
  18. cdnbest 节点和主控连接不上原因主要查看几点
  19. Tr A HDU1575
  20. uniGUI试用笔记(四)

热门文章

  1. TZ_01MyBatis_log4j.propertiies
  2. php学习知识点框架
  3. 区块链、云计算、大数据、人工智能、FinTech带来的挑战与机遇,中国技术开放日上海站精彩回顾
  4. Tomcate 启动异常,java.net.BindException: Address already in use: JVM_Bind:80的解决办法
  5. Prime Ring Problem HDU - 1016 (dfs)
  6. python 轴向连接
  7. 【洛谷P1204】【USACO1.2】挤牛奶Milking Cows
  8. Leetcode8.String to Integer (atoi)字符串转整数(atoi)
  9. JS常用属性方法大全
  10. vue里调用moment.js