请选择 进入手机版 | 继续访问电脑版

前馈科技

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 744|回复: 0

codeblocks条件编译代码显示问题

[复制链接]

97

主题

97

帖子

539

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
539
发表于 2020-3-13 13:49:43 | 显示全部楼层 |阅读模式
          codeblocks有一个很好的功能:它能根据宏定义讲将条件编译的代码显示为不同的颜色,满足编译条件的代码正常显示,不满足编译条件的代码显示为淡灰色。但是近日用codeblocks调试nuttx发现一个问题:codeblocks的editor在显示条件编译代码时只能识别本文件内定义的宏,对本文件包含的头文件中的宏定义一概忽略:
21502137-424c5936becc5279.png
关于CHIP_NUARTS的条件编译代码显示异常


      代码颜色似乎说明CHIP_NUARTS定义为0(即未定义),但实际上在头文件<arch/board/board.h>中已经将CHIP_NUARTS定义为3了,而且整个代码编译正常,可见codeblocks的editor未能识别<arch/board/board.h>中CHIP_NUARTS的定义!
       首先为怀疑是arch/board/board.h的路径问题,因为arch/board/board.h是一个软连接(Symbolic link),可能codeblocks的editor无法正常搜索软连接中的内容。因此我将nuttx/tools/link.sh中连接命令的参数由软连接改为硬连接:
即将:ln -s "${src}" "${dest}" || { echo "Failed to create link: $dest" ; exit 1 ; }                          修改为 :ln "${src}" "${dest}" || { echo "Failed to create link: $dest" ; exit 1 ; }      
      然而配置nuttx时报错:不能对目录进行硬连接! 经查询资料,linux确实不支持对目录进行硬连接。无可奈何,最终选了一个邪路:不用软连接,而是真正复制文件,建立真是目录:具体措施为:将nuttx/tools/link.sh中连接命令改为复制命令:
即将:ln -s "${src}" "${dest}" || { echo "Failed to create link: $dest" ;   exit 1 ; }                          修改为 :cp -r  "${src}" "${dest}" || { echo"Failed to create link: $dest" ; exit 1 ; }      
      再次配置nuttx,虽然速度慢了点(要真实复制很多文件)但却成功了,之后make oldconfig、make menuconfig、make均成功:
21502137-a3b6e6c402e34695.png
执行make时复制的目录才最终显示出来


      再次在codeblocks中打开NuttX工程,这下原来无法显示的软连接可以显示了(因为变成了真实目录):
21502137-ff2a516e3d39fc28.png
board.h在codeblocks工程树中正常显示


      然而,editor中条件编译代码的显示依然是那个鸟样!!!
     为了验证这确实是codeblocks的一个问题,我重新建立了一个最简单的新工程,只有一个c文件,一个h文件,结果问题依旧,c文件中的条件编译识别不了h文件中的宏定义,而宏直接在c文件中定义则能正常识别。
    折腾了两天,问题未能解决,最后只能忍痛不使用codeblocks的条件编译灰色显示功能,即在editor设置中关闭该功能:
21502137-8a523f977c4ef7e5.png
取消非激活代码灰色显示复选框


  之后似然代码阅读虽然没那么方便,但总比被editor误导要好:   
21502137-38358ba9d65c81d8.png
关闭非激活代码灰色显示功能后的显示效果


      折腾两天最终未能解决codeblocks的这个问题,但codeblocks仍不失为一个好工具,哪位大神能解决该问题请联系我,必有重谢!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|计算机控制

GMT+8, 2024-3-29 12:35 , Processed in 0.055308 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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