0

我创建了一个if(isa<IfStmt>(s))if(isa<ReturnStmt>(s))如果找到它会打印一些东西。我创建了这个简单的 C++ 代码,它在 if 语句中包含 return 语句

#include <stdlib.h>
int main(int argc, char** argv) {
  int a = atoi(argv[1]);
  if(a == 0)
    return 1;
  else
    return 10;
  return 0;
}

是否可以跳过/忽略if else 语句中的return语句?

4

1 回答 1

2

clang-query test.cpp --

match returnStmt(unless(hasAncestor(ifStmt()))

要解决这样的问题,AST 匹配器的引用和 clang 的-ast-dump 参数是你的朋友。还有它本身,因为它接受与C++ APIclang-query几乎相同的 DSL 。clang

于 2016-07-27T08:29:00.440 回答