概述
源代码有点复杂,只是形式不用在意执行意义,它只是展示大部分所有的语法点:循环及其break和continue、goto、分支、try...catch等等,应有尽有。
是不是比单纯看代码容易很多?
int
SocketAgent::DataReceiver(
char
*
data)
{
SocketAgent * a;
int ret = 0 ,pos,len,count;
int buff[ 1024 ];
int * i_data = ( int * )data;
len = 0 ;
do {
if (i_data[len] == ' a ' )
{
while (i_data[len] && len < 1024 )
{
if (i_data[len] == ' r ' )
{
len ++ ;
continue ;
}
if (i_data[len] == ' n ' )
break ;
}
}
} while (len < 1024 );
for ( int i = 0 ,pos = 0 ,count = 0 ;i < 1024 ;i ++ )
{
if (i_data[i] != ' q ' )
buff[pos ++ ] = i_data[i];
if (i_data[i] == ' b ' )
{
break ;
}
else
count ++ ;
if (i_data[i] == T_ERROR)
{
goto _exit;
}
}
try {
if (len >= 1024 )
throw ( " throw out " );
} catch ( char * error)
{
ShowMessage(error);
}
switch (count)
{
case 1 :
ret = 100 ;
break ;
case 2 :
ret = 200 ;
break ;
default :
ret = 300 ;
break ;
}
return ret;
_exit:
ret = 1001 ;
return ret;
}
再看看分析后的流程图
{
SocketAgent * a;
int ret = 0 ,pos,len,count;
int buff[ 1024 ];
int * i_data = ( int * )data;
len = 0 ;
do {
if (i_data[len] == ' a ' )
{
while (i_data[len] && len < 1024 )
{
if (i_data[len] == ' r ' )
{
len ++ ;
continue ;
}
if (i_data[len] == ' n ' )
break ;
}
}
} while (len < 1024 );
for ( int i = 0 ,pos = 0 ,count = 0 ;i < 1024 ;i ++ )
{
if (i_data[i] != ' q ' )
buff[pos ++ ] = i_data[i];
if (i_data[i] == ' b ' )
{
break ;
}
else
count ++ ;
if (i_data[i] == T_ERROR)
{
goto _exit;
}
}
try {
if (len >= 1024 )
throw ( " throw out " );
} catch ( char * error)
{
ShowMessage(error);
}
switch (count)
{
case 1 :
ret = 100 ;
break ;
case 2 :
ret = 200 ;
break ;
default :
ret = 300 ;
break ;
}
return ret;
_exit:
ret = 1001 ;
return ret;
}
是不是比单纯看代码容易很多?
转载于:https://www.cnblogs.com/yesry/archive/2008/02/07/1065852.html
最后
以上就是沉静雪碧为你收集整理的让大家见识一下新一代分析源代码生成流程图的东东吧的全部内容,希望文章能够帮你解决让大家见识一下新一代分析源代码生成流程图的东东吧所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复