Source Insight中代码存在条件编译的情况下,大括号配对的问题?

如以下代码:#defineDESTinta;if(a<2000){#ifdefDESTif(a<1000){a++;}}#elseif(a>1000){a--;}}#en... 如以下代码:
#define DEST
int a;
if(a<2000)
{
#ifdef DEST
if(a <1000)
{
a++;
}
}
#else
if(a >1000)
{
a--;
}
}
#endif

在使用Edit Condition将DEST的值设为0后,第一段代码显示为无效,但是双击if下面的大括号{ ,SI自动匹配到无效代码里的那个大括号,不知能不能配置让其自动匹配到第二段有效代码位置的对应的大括号?这样在看复杂的代码时就更方便了。
展开
 我来答
kkkwing
2012-09-20 · TA获得超过1221个赞
知道小有建树答主
回答量:267
采纳率:90%
帮助的人:256万
展开全部
Source Insight也不是神,尤其对于这种对于括号嵌套还要带条件编译的情况,如果多出现几次这种情况,甚至可能文件的配宽函数/变量/宏定义列表都无法进行解析了。
所以薯晌写的时候尽量避免这种情况出现,象你说的这种情况,把括号匹培手亮配放到条件编译的外面不是更好吗?
一目了然,简单明了,如下:

#define DEST
void main()
{
int a;
if(a<2000)
{
#ifdef DEST
if(a <1000)
{
a++;
}
#else
if(a >1000)
{
a--;
}
#endif
}
}
追问
这个代码只是举个例子,我在看一个复杂的代码,里面因为有这种情况造成代码无法解析,我是想找个方法解决这个问题,看来是没办法了。
追答
我也遇到过由于条件编译导致文件无法被解析的情况,之后我花时间试了一下,其实很可能只是某一处的条件编译是按照你举例的那种情况来写的,把这些包含一半括号的条件编译内容改成我写的那种条件编译内只包含匹配括号的情况可能就好了。不过如果你举例的用法比较多的话,改起来就比较麻烦了。

参考资料: 根据使用经验回答

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
czm0605010127
2012-09-19 · TA获得超过1164个赞
知道小有建树答主
回答量:637
采纳率:96%
帮助的人:41.2万
展开全部
上个问题我回到了你,哈哈,这个问题好像确实解决不了,括弧对齐好像根本不看宏定义,可能是SI的bug
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式