惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
爱范儿
爱范儿
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
博客园 - 聂微东
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
罗磊的独立博客
Jina AI
Jina AI

博客园 - yesry

程序员专用IM新版本发布,诸多创新非模仿 VC的强大 + ExtJS的漂亮 + (MySQL+SQlite)数据库 + JavaScript的动态语言的灵活 通过桥接器,Java调用任何DLL 学生的福音:做错之题管理 Google 和 baidu 搜索结果二次加工 键鼠模拟的妙用 汉编卷土重来? 用贾樟柯访谈评《疯狂的程序员》 Widgets 引擎的设计和实现 Duceland Widgets Engine 例子一 作为软件从业员面对番茄事件的尴尬立场 招聘Windows API 熟悉人 招IE插件精通人 史上最不安全的浏览器——Dangerous Browser VC调用 JavaScript 难题:如何使当前程序的对象进入脚本 PHP能参与桌面项目吗?适合吗?——C#客户端 嵌入 PHP 一例 互联网公司老板的十大谎言之解——时间成本和竞争成本 我在外资公司的2个月 如何进行界面和业务逻辑分开的原型化开发
让大家见识一下新一代分析源代码生成流程图的东东吧
yesry · 2008-02-07 · via 博客园 - yesry

源代码有点复杂,只是形式不用在意执行意义,它只是展示大部分所有的语法点:循环及其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;
}

再看看分析后的流程图

是不是比单纯看代码容易很多?