源代码有点复杂,只是形式不用在意执行意义,它只是展示大部分所有的语法点:循环及其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
最后
以上就是沉静雪碧最近收集整理的关于让大家见识一下新一代分析源代码生成流程图的东东吧的全部内容,更多相关让大家见识一下新一代分析源代码生成流程图内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复