eclipse cdt

根据offset、offsetLen查找节点
IASTNode iastNode = fileParserUnit.getIastTranslationUnit().getNodeSelector(null).findNode(168, 4);
        if (iastNode!=null){
            String cls = iastNode.getClass().getName();
            String str = iastNode.getRawSignature();
            int line = iastNode.getFileLocation().getStartingLineNumber();
            System.out.println();
        }

 a

#include<stdio.h>
#include<stdbool.h>
//上面#include中不存在,为了编译通过加上,不然bool不可识别标识符
#define IF_X(x) if(x){
/***********
*禁止定义不象函数的宏
**********/
void static_p (void)
{
  bool test=true;
  IF_X(test)
  	test=!test;
  }
  if(test){
    test=!test;
  }
}

a

IASTNodeSelector iastNodeSelector = fileParserUnit.getIastTranslationUnit().getNodeSelector(null);
//        IASTNode iastNode = iastNodeSelector.findNode(168, 4);
        IASTNode iastNode = iastNodeSelector.findEnclosingName(181, 4);
        if (iastNode!=null){
            if (iastNode instanceof ASTPreprocessorName) {
                ASTPreprocessorName astPreprocessorName = (ASTPreprocessorName) iastNode;
                IBinding iBinding = astPreprocessorName.resolveBinding();
                if (iBinding!=null && !(iBinding instanceof IProblemBinding)) {
                    IASTName[] iastNames = fileParserUnit.getIastTranslationUnit().getDeclarationsInAST(iBinding);
                    if (iastNames!=null){
                        Arrays.stream(iastNames).forEach(iastName -> {
                            String iastNameStr = iastName.getClass().getName();
                            if (iastName instanceof ASTPreprocessorName) {
                                ASTPreprocessorName astPreprocessorName1 = (ASTPreprocessorName) iastName;
                                String file = astPreprocessorName1.getFileLocation().getFileName();
                                int line = astPreprocessorName1.getFileLocation().getStartingLineNumber();
                                System.out.println();
                            }
                            System.out.println();

                        });
                    }
                }

            }

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值