这一节,我们就NS3第一个例子,也是最简单的例子hello 开始学习。
以下是 hello-simulator.cc 的源码:
---------------------------------------------------------------------------------------
#include "ns3/core-module.h"
//声明了一个叫HelloSimulator的日志构件,通过引用HelloSimulator这个名字的操作,
//可以实现打开或者关闭控制台日志的输出。
NS_LOG_COMPONENT_DEFINE ("HelloSimulator");
using namespace ns3; //namespace的声明
int main (int argc, char *argv[])
{
NS_LOG_UNCOND ("Hello Simulator"); //无条件记录相关消息
}
---------------------------------------------------------------------------------------------
./waf 编译后,运行 ./waf --run hello-simulator.cc, 结果如下:
本例子很简单,相信有一些C++基础的朋友都很快理解,接下来借该例子再分析一下两点NS3特有的性质。
1、头文件
在编译的过程中,每一个ns-3的include文件被放在build目录下一个叫ns3的目录中,这样做可以避免include文件名的冲突。如果你查看ns3目录会发现大量的头文件。
2、日志
Ns3提供了一个可供选择的、多级别的方法来记录日志。日志可以完全被禁用,或仅对部分组件可用,或全局可用。并且ns3提供了不同详尽程度的日志级别供选。NS-3日志模块提供了直观的、相对简单的使用方法来帮助用户获得仿真过程的所需信息。
在现有的系统中,有7个详尽程度递增的日志级别,他们分别是:
? NS_LOG_ERROR — Log error messages;
? NS_LOG_WARN — Log warning messages;
? NS_LOG_DEBUG — Log relatively rare, ad-hoc debugging messages;
? NS_LOG_INFO — Log informational messages about program progress;
? NS_LOG_FUNCTION — Log a message describing each function called;
? NS_LOG_LOGIC – Log messages describing logical flow within a function;
? NS_LOG_ALL — Log everything.
? NS_LOG_ERROR — 记录错误信息;
? NS_LOG_WARN — 记录警告信息;
? NS_LOG_DEBUG — 记录相对不常见的调试信息;
? NS_LOG_INFO — 记录程序进展信息;
? NS_LOG_FUNCTION — 记录描述每个调用函数信息;
? NS_LOG_LOGIC – 记录一个函数内描述逻辑流程的信息;
? NS_LOG_ALL — 记录所有信息.
我们也提供了一种一直被使用的无条件日志级别,它是跟日志详尽级别或是组件选择无关的。
? NS_LOG_UNCOND – 无条件记录相关消息.
每一个级别能够被单独地被调用或逐级递增的被调用。
本人也是刚开始学习,有什么地方不对,请各位朋友多多指正,互相学习才能共同进步。