这似乎更像是一个 C++ 问题而不是 Clang 问题......
我必须使用 C++ 来编写 OCLint(静态代码分析器)规则。
我希望比较 Clang 库中类型为“SourceLocation”的两个对象。
此类型提供有关代码中对象(语句、声明等)的位置(基本上是行和列)的信息。
基本上,我想知道语句 A 是在语句 B 之前还是之后开始和结束。
在伪代码中,这意味着我想从以下位置获取布尔值:
( stmt_A->getLocBegin() < stmt_B->getLocBegin() ),例如。当然,这不会编译,因为“<”运算符未在两个“SourceLocation”类型的对象之间定义。
我在 Clang 文档中找到了一个方法,但是由于我不是 C++ 的频繁用户,所以我没有找到使用它的方法,这里是这个方法:
http://clang.llvm.org/doxygen/classclang_1_1BeforeThanCompare_3_01SourceLocation_01_4.html
clang::BeforeThanCompare<SourceLocation>::BeforeThanCompare (SourceManager &SM)
bool clang::BeforeThanCompare< SourceLocation >::operator()(SourceLocation LHS, SourceLocation RHS) const [inline]
我不知道如何使用 SourceManager,或者只是如何获得上面的这个布尔值。