搜索
bottom↓
回复: 13

寻求能自动解析编译条件的c/c++编辑器

[复制链接]

出0入0汤圆

发表于 2014-5-3 10:33:50 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 tianheiGE 于 2014-5-3 12:45 编辑

RT,有个比较大的项目代码里面用了很多条件编译,阅读的时候碰到了编译条件的时候不知道这段有没有编译,每次都要去查看编译条件的宏,感觉很不方便,不知道有没那个好用的编辑器能自动解析这些编译条件,不编译的段灰色显示,谢谢!
试过了几个多是要#if 0     #endif的才会灰色,带宏的多没解析



编辑:
        发现VS是有这个功能的,而且VS还有个好用的编辑插件Visual Assist X,决定试试VS,坛友说Eclipse也可以,但是感觉它用起来好像有点复杂,但是比VS应该轻巧很多

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2014-5-3 11:25:34 | 显示全部楼层
eclipse可以

出0入0汤圆

发表于 2014-5-3 11:49:18 | 显示全部楼层
编译条件是编译器给出的啊,编写代码的过程中编译器根本就在一边晾着,没有对代码做出任何操作,编辑器怎么可能获得这些宏参数呢?

真想实现这样的功能,建议显式的把编译条件宏自己写出来.

出0入0汤圆

发表于 2014-5-3 11:51:58 | 显示全部楼层
Eclipse可以,它似乎是自己实现了一套准编译器。
CodeBlocks不是太复杂的可以解析,复杂的不行。

基于Clang的自动完成系统多数都能搞定,但是配置起来比较麻烦。这个VIM,SubLimeText,EMacs有用到的。

出0入0汤圆

发表于 2014-5-3 11:53:42 | 显示全部楼层
error_dan 发表于 2014-5-3 11:49
编译条件是编译器给出的啊,编写代码的过程中编译器根本就在一边晾着,没有对代码做出任何操作,编辑器怎么可 ...

可以的,这个是现代编辑器的一个趋势了;本来好的自动完成就是要“编译”代码的。
要么自己实现,要么用CLang的接口。

GCC/VC好像还没提供类似的功能。

出0入0汤圆

发表于 2014-5-3 12:06:28 | 显示全部楼层
dr2001 发表于 2014-5-3 11:53
可以的,这个是现代编辑器的一个趋势了;本来好的自动完成就是要“编译”代码的。
要么自己实现,要么用C ...

持续集成神马的吗?咱嵌入式领域在工具上还是落后了啊~

所以这个功能需要完整的工具链来提供,而不是寻找一个NB的纯编辑器...(我刚才真去翻了我的NP++,木有这样的插件...,SubLimeText2装了以后就用来撸高级语言了,还真没想到...

出0入0汤圆

 楼主| 发表于 2014-5-3 12:26:59 | 显示全部楼层

恩,装了,感觉有点复杂我好好看看怎么用,谢谢!

出0入0汤圆

 楼主| 发表于 2014-5-3 12:28:51 | 显示全部楼层
error_dan 发表于 2014-5-3 11:49
编译条件是编译器给出的啊,编写代码的过程中编译器根本就在一边晾着,没有对代码做出任何操作,编辑器怎么可 ...

这个我觉的可以实现吧,编译过程是先预处理,再编译。编辑器要能进行预处理就知道哪些不会被编译的代码了,不是这样吗?

出0入0汤圆

 楼主| 发表于 2014-5-3 12:29:39 | 显示全部楼层
dr2001 发表于 2014-5-3 11:51
Eclipse可以,它似乎是自己实现了一套准编译器。
CodeBlocks不是太复杂的可以解析,复杂的不行。

恩,谢谢,我试试

出0入0汤圆

发表于 2014-5-3 12:35:10 | 显示全部楼层
tianheiGE 发表于 2014-5-3 12:28
这个我觉的可以实现吧,编译过程是先预处理,再编译。编辑器要能进行预处理就知道哪些不会被编译的代码了 ...

对,就是这个意思,表面上它是个编辑器,其实后台跑着一个编译器前端,不断的对你的代码进行parse和analysis,这里不仅仅局限于预编译,还有其他编译器前端应该干的事情,都是一边编辑 一边就做了.
博大精深啊~

出0入0汤圆

 楼主| 发表于 2014-5-3 12:40:18 | 显示全部楼层
error_dan 发表于 2014-5-3 12:35
对,就是这个意思,表面上它是个编辑器,其实后台跑着一个编译器前端,不断的对你的代码进行parse和analysis, ...

恩,我刚发现VS也有这个功能,它应该用起来比Eclipse简单吧,决定用下VS

出0入0汤圆

发表于 2014-5-3 13:53:46 | 显示全部楼层
error_dan 发表于 2014-5-3 12:06
持续集成神马的吗?咱嵌入式领域在工具上还是落后了啊~

所以这个功能需要完整的工具链来提供,而不是寻找 ...

要想很好的支持自动完成,对于C/C++来说,就是需要一个编译器前端。

大家面临的不是是否需要的问题,而是自己实现vs用现成产品的问题。
对Eclipse和VS等等老一些的全功能IDE,基本上是依靠自己的“编译器”了;对扩展性强,优质的编辑器系统,多数会采用Clang提供的接口。只不过Clang对Win32的支持略差。

出0入42汤圆

发表于 2014-5-4 09:05:31 | 显示全部楼层
同意三楼, 很多项目一套代码能出十来个平台的产品. 所有的宏控制都在不同的makefile里面, 编辑的时候还没法知道这个宏是否开启了.

出0入0汤圆

发表于 2014-5-4 09:30:13 | 显示全部楼层
用惯IDE了,好像没有这样的烦恼……一套代码出来20多种风格差异较大的产品
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 13:35

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表