博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设置SourceInsight的condition解决代码语法解析错误的问题
阅读量:2442 次
发布时间:2019-05-10

本文共 1032 字,大约阅读时间需要 3 分钟。

 
设置
SourceInsight
condition
解决代码语法解析错误的问题
 
作者:刘旭晖 Raymond转载请注明出处
Email:
BLOG:
 
今天使用SourceInsight的时候遇到一个很郁闷的问题,明明存在的函数,source insight就是找不到,仔细看了一下,发现原因如下: 类似下面的代码,在函数f1中,有一个#ifdef 的条件宏,在条件宏的两个分支中,都使用了大括号作为一段代码区间的起始括号:
 
static void f1 ()
{
       Some code ;
 
#ifdef MACRO1
       if( some judge ){
#else
       if( other judge ){
#endif
                     Somecode;
       } // source insight 将这个括号与第二个if匹配上了
       Some more code;
} // source insight 将这个括号与第一个if匹配上了
 
Static void f2()
{
       …
}
 
Static void f3()
{
       …
}
 
 
结果,Sourceinsight在解析的时候,在语法匹配时,将宏的两个分支里的大括号都统计上了,于是在反括号的匹配过程中,无形中,就使得反括号少了一个,结果导致到了函数f1的结尾处的反括号,source insight还是认为函数没有结束,于是使得下面的 f2 和f3 被认为属于f1的一部分,于是在看代码的时候,source insight 就不认为存在f2 f3这两个函数了。
 
这个,真的有些郁闷,不知道会有多少种类似的情况导致代码不能被正确解析。影响甚至误导了程序的阅读理解。
 
仔细看了source insight的用户手册,发现有个办法可以亡羊补牢事后解决这个问题。
 
在Options > Preferences: Language 里面可以设置condition, 所谓condition基本上就是设置标识符及其值。例如上面的例子,可以添加一个名为MACRO1的标识符,并设置其值为1。这样,source insight在代码解析的过程中,就会按照condition来解析或忽略对应的代码。、
 
于是设置过这个condition以后,source insight就能正确匹配上述代码中的大括号了,问题解决。不知道有没有更灵活的解决办法。
 
由于被忽略的代码会以灰色显示,所以可以顺便把代码中你能确定的宏的值添加上,方便阅读代码,直观的判断有效代码。
 
你可能感兴趣的文章
azure免费一个月_将Windows Azure提升到一个新的水平
查看>>
app engine 入门_Google App Engine和PHP:入门
查看>>
使用Pspell查找和纠正拼写错误的单词
查看>>
如何在Windows上安装Ghost
查看>>
phpstorm -xmx_PhpStorm 8-新功能
查看>>
liferay_云中的Liferay
查看>>
SQL或NoSQL:Google App Engine-第1部分
查看>>
SitePoint Podcast#178:Web设计过程和创造力
查看>>
移动端获取视频第一帧移动端_后端即服务-第1部分
查看>>
畅谈理想未来为主题的铅笔画_与专家畅谈Node.js
查看>>
SitePoint Podcast#173:释放混乱的猴子
查看>>
php 查询成绩_与专家讨论PHP: 成绩单
查看>>
一年新的一年_一年的云创新
查看>>
使用PHP从Access数据库中提取对象,第2部分
查看>>
openbiz_Openbiz Cubi:健壮PHP应用程序框架,第1部分
查看>>
使用PHP从Access数据库中提取对象,第1部分
查看>>
使用云waf的案例_9种流行的云使用案例
查看>>
类集合转换类集合_PHP中的集合类
查看>>
使用SimplePie消费Feed
查看>>
运算符二进制_基本转换和二进制运算符
查看>>