使用Coan来净化众多的预编译指令,简化C/C++代码
看开源代码的同学经常有个影响阅读的问题是许多的预编译指令,导致阅读很不顺畅。比如nginx代码中包含关于defined(WIN32) 的代码分支等。
找了很久没有找到能够净化,自动移除不需要的代码的工具,后来朋友介绍了Coan这个工具,(翻墙才能访问)。使用后妈妈再也不担心我的代码了!强烈推荐!不过好像隐约感觉,GCC预编译器应该就有这个功能,可能是某个参数指定。
比如我的需求是为了净化如下代码:
if(listensock[i] != INVALID_SOCKET){ #ifndef WIN32 close(listensock[i]); #else closesocket(listensock[i]); #endif }
因为我肯定不用关心windows方面代码,看着很碍眼,那么可以用Coan工具自动去除WIN32相关的代码为如下代码:
if(listensock[i] != INVALID_SOCKET){ close(listensock[i]); }
怎么样,清爽很多了吧,这个还是比较简单的,要是代码量大的,这样效果更明显了。
安装这个工具后,使用非常简单,到代码目录,使用如下命令就能搞定一切:
coan source -UWIN32 -DSIGHUP -U__CYGWIN__ -UWITH_BRIDGE --filter c,h --recurse .
对于刚看的mosquitto项目,我的净化命令是:
coan source -UWIN32 -DSIGHUP -U__CYGWIN__ -UWITH_BRIDGE -UWITH_TLS -UWITH_TLS_PSK -UCHANGESET --filter c,h --recurse .
上面的指令不多介绍了,看一下就知道。这样净化过的代码看起来顺畅很多了。搜索几乎找不到这个软件,强烈推荐!
近期评论