资源描述:
《深入剖析NS2的框架代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、.....................最新资料整理推荐.....................1. NS2的主函数main位于tclAppInit.cc文件中
int
main(intargc,char**argv)
{
Tcl_Main(argc,argv,Tcl_AppInit);
return0; /*Neededonlytopreventcompilerwarning.*/
}
从这个main函数中我们可以看到:整个NS2的框架其实完全包含在TCL_Main函数中。
2.Tcl_Main函数位于/g
2、eneric/TclMain.c文件中,这个函数的代码如下:(可能比较长)
void
Tcl_Main(argc,argv,appInitProc)
intargc; /*Numberofarguments.*/
char**argv; /*Arrayofargumentstrings.*/25.....................最新资料整理推荐.....................
Tcl_AppInitProc*appInitProc;
/*Applica
3、tion-specificinitialization
*proceduretocallaftermost
*initializationbutbeforestartingto
*executecommands.*/
{
Tcl_Obj*resultPtr,*argvPtr,*commandPtr=NULL;
PromptTypeprompt=PROMPT_START;
intcode,length,tty,exitCode=0;
Tcl_Chann
4、elinChannel,outChannel,errChannel;
Tcl_Interp*interp;
Tcl_DStringappName;
Tcl_Obj*objPtr;
Tcl_FindExecutable(argv[0]); //寻找可执行文件ns?作用未知,参数的值为可执行文件ns对应的路径
25.....................最新资料整理推荐..................... interp=Tcl_CreateInterp(); //创建OTCL解释器
Tcl_InitMe
5、mory(interp); //配置解释器
/*
*Makecommand-lineargumentsavailableintheTclvariables"argc"
*and"argv".Ifthefirstargumentdoesn'tstartwitha"-"then
*stripitoffanduseitasthenameofascriptfiletoprocess.
*/
if(TclGetStartupScriptPath()==NULL){
if((argc>1)&&(argv
6、[1][0]!='-')){
TclSetStartupScriptFileName(argv[1]);
argc--;
argv++;
}
25.....................最新资料整理推荐.....................}
if(TclGetStartupScriptPath()==NULL){
Tcl_ExternalToUtfDString(NULL,argv[0],-1,&appName);
}else{
TclSetStartupScri
7、ptFileName(Tcl_ExternalToUtfDString(NULL,
TclGetStartupScriptFileName(),-1,&appName));
}
Tcl_SetVar(interp,"argv0",Tcl_DStringValue(&appName),TCL_GLOBAL_ONLY);
Tcl_DStringFree(&appName);
argc--;
argv++;
objPtr=Tcl_NewIntObj(argc);
Tcl_IncrRefCount
8、(objPtr);
Tcl_SetVar2Ex(interp,"argc",NULL,objPtr,25....................