我正在阅读xl2tpd的源代码,并在阅读此代码时遇到很多问题.例如,我找不到结构lac的定义.我如何找到这个结构的定义?
我使用ctags和vim来读取此代码,但未能找到结构.我用Google搜索,找不到结构.有没有什么方法可以让代码阅读过程更舒服?也就是说,我可以跳到大多数变量,函数和结构的定义?
解决方法
用vim试试cscope.按照以下步骤 –
1)在xl2tpd目录中运行cscope -R.它将创建文件cscope.out
2)使用vim打开文件,其中使用结构lac
3)使用:cs f g< lac> .现在它将显示定义lac的文件.
4)选择file.h.它包含定义.
如果您对struct lac的定义非常感兴趣,那么它是 –
1)在xl2tpd目录中运行cscope -R.它将创建文件cscope.out
2)使用vim打开文件,其中使用结构lac
3)使用:cs f g< lac> .现在它将显示定义lac的文件.
4)选择file.h.它包含定义.
如果您对struct lac的定义非常感兴趣,那么它是 –
struct lac { struct lac *next; struct host *lns; /* LNS's we can connect to */ struct schedule_entry *rsched; int tun_rws; /* Receive window size (tunnel) */ int call_rws; /* Call rws */ int rxspeed; /* Tunnel rx speed */ int txspeed; /* Tunnel tx speed */ int active; /* Is this connection in active use? */ int hbit; /* Permit hidden AVP's? */ int lbit; /* Use the length field? */ int challenge; /* Challenge authenticate the peer? */ unsigned int localaddr; /* Local IP address */ unsigned int remoteaddr; /* Force remote address to this */ char authname[STRLEN]; /* Who we authenticate as */ char password[STRLEN]; /* Password to authenticate with */ char peername[STRLEN]; /* Force peer name to this */ char hostname[STRLEN]; /* Hostname to report */ char entname[STRLEN]; /* Name of this entry */ int authpeer; /* Authenticate our peer? */ int authself; /* Authenticate ourselves? */ int pap_require; /* Require PAP auth for PPP */ int chap_require; /* Require CHAP auth for PPP */ int pap_refuse; /* Refuse PAP authentication for us */ int chap_refuse; /* Refuse CHAP authentication for us */ int idle; /* Idle timeout in seconds */ int autodial; /* Try to dial immediately? */ int defaultroute; /* Use as default route? */ int redial; /* Redial if disconnected */ int rmax; /* Maximum # of consecutive redials */ int rtries; /* # of tries so far */ int rtimeout; /* Redial every this many # of seconds */ char pppoptfile[STRLEN]; /* File containing PPP options */ int debug; struct tunnel *t; /* Our tunnel */ struct call *c; /* Our call */ };