免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 12706 | 回复: 18

stripcc 0.2.0发布,去除C源代码中未使用的条件编译分枝 [复制链接]

论坛徽章:
0
发表于 2008-12-30 23:00 |显示全部楼层
还有人记得stripcc/nocc么?时隔一年多,再次发布一个新版本0.2.0,欢迎大家使用并提出宝贵意见。

简单介绍一下,stripcc的用途是为了提高C源代码的可读性而去除其中未被编译的条件编译分枝,但保留正常的注释以及源码风格。

stripcc-0.2.0版本做了哪些主要改进?相对于0.1.*版本:
a,支持配置文件,更加灵活的使用方式。
b,加强了代码容错功能,stripcc-0.1.*工作时如果遇到有语法错误的C文件将自动退出,0.2.0版本会忽略该文件而继续处理。
c,增加了快速处理模式,但不幸的是事实效果并不好,本来预想的0.2.0的最大改进只能暂时作为实验特性。

我写的一篇专门介绍stripcc的文章:http://blog.chinaunix.net/u/10449/showart.php?id=1762809
项目主页:http://sourceforge.net/projects/stripcc,不过这里的文档还未更新,最近会做这件事情。

祝各位新年快乐!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2008-12-30 23:04 |显示全部楼层
sp

论坛徽章:
0
发表于 2008-12-30 23:13 |显示全部楼层
我记得原来在C版有人发布过类似的项目,不记得是不是LZ了.
至少两年前的事情了.

论坛徽章:
0
发表于 2008-12-30 23:16 |显示全部楼层

论坛徽章:
0
发表于 2008-12-30 23:21 |显示全部楼层
最近正在攻读perl解释器的源代码,下面这段代码来自perl,真把人看的眼晕了, stripcc正好可以解决问题,GOOD!

  1. #ifdef DOSISH
  2. #define PERLLIB_SEP ';'
  3. #else
  4. #define PERLLIB_SEP ':'
  5. #endif
  6. #ifndef TAINT                /* Can't allow arbitrary PERLLIB in setuid script */
  7.     incpush(getenv("PERLLIB"));
  8. #endif /* TAINT */

  9. #ifndef PRIVLIB
  10. #define PRIVLIB "/usr/local/lib/perl"
  11. #endif
  12.     incpush(PRIVLIB);
  13.     (void)apush(stab_array(incstab),str_make(".",1));

  14.     str_set(&str_no,No);
  15.     str_set(&str_yes,Yes);

  16.     /* open script */

  17.     if (scriptname == Nullch)
  18. #ifdef MSDOS
  19.     {
  20.         if ( isatty(fileno(stdin)) )
  21.           moreswitches("v");
  22.         scriptname = "-";
  23.     }
  24. #else
  25.         scriptname = "-";
  26. #endif
  27.     if (dosearch && !index(scriptname, '/') && (s = getenv("PATH"))) {
  28.         char *xfound = Nullch, *xfailed = Nullch;
  29.         int len;

  30.         bufend = s + strlen(s);
  31.         while (*s) {
  32. #ifndef DOSISH
  33.             s = cpytill(tokenbuf,s,bufend,':',&len);
  34. #else
  35. #ifdef atarist
  36.             for (len = 0; *s && *s != ',' && *s != ';'; tokenbuf[len++] = *s++);
  37.             tokenbuf[len] = '\0';
  38. #else
  39.             for (len = 0; *s && *s != ';'; tokenbuf[len++] = *s++);
  40.             tokenbuf[len] = '\0';
  41. #endif
  42. #endif
  43.             if (*s)
  44.                 s++;
  45. #ifndef DOSISH
  46.             if (len && tokenbuf[len-1] != '/')
  47. #else
  48. #ifdef atarist
  49.             if (len && ((tokenbuf[len-1] != '\\') && (tokenbuf[len-1] != '/')))
  50. #else
  51.             if (len && tokenbuf[len-1] != '\\')
  52. #endif
  53. #endif
复制代码

论坛徽章:
0
发表于 2008-12-31 02:36 |显示全部楼层
很好,支持。

论坛徽章:
0
发表于 2008-12-31 09:12 |显示全部楼层
支持,不错的东西

论坛徽章:
0
发表于 2008-12-31 09:32 |显示全部楼层
很好的东西

论坛徽章:
0
发表于 2008-12-31 10:10 |显示全部楼层
stripcc给我帮助很大,在此感谢:)

论坛徽章:
0
发表于 2008-12-31 10:11 |显示全部楼层
看起来不错~~~谢谢lz
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP