Clang AST : 外部链接规范问题
Clang AST : extern LinkageSpec issue
我目前正在使用 clang 的 python 绑定编写一个静态C++代码分析器,由于某种原因,我找不到 AST 中是否extern
某些东西,即使有一个似乎是专有的 CursorKind (CXCursor_LinkageSpec)
我的意思是,在解析像extern int foo;
这样的代码时,我只会在 AST 中找到我的变量foo
,而没有关于其链接规范的单一线索。
我错过了什么?
问候
类 VarDecl 有一个成员函数:bool hasExternalStorage () const它告诉您变量是否为 extern。
我正在使用 clang 的 C++ lib。希望它能帮助你的python工作。
有点死灵答案,但如果你进入 clang\lib\Sema\SemaCodeComplete.cpp(如果你按照 llvm 的安装说明,在 \llvm\tools\ 中)并添加以下行:
case Decl::LinkageSpec: return CXCursor_LinkageSpec;
要进入开关:
CXCursorKind clang::getCursorKindForDecl(const Decl *D)
它应该解决 clang 的 Python 绑定器返回UNEXPOSED_DECL而不是正确的LINKAGE_SPEC的问题。 此更改是在修订版 183352(2013-06-05) 中进行的。
我的版本示例:
CXCursorKind clang::getCursorKindForDecl(const Decl *D) {
if (!D)
return CXCursor_UnexposedDecl;
switch (D->getKind()) {
case Decl::Enum: return CXCursor_EnumDecl;
case Decl::LinkageSpec: return CXCursor_LinkageSpec;
// ......
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- libssh 问题编译问题未定义的错误
- C 代码问题?编译器问题?代码块
- 我对这个问题有问题,我的输出不正确
- 面临功能问题的问题
- 递归中的异常问题(8皇后问题)
- 指针问题?这个问题?类问题
- VS 2010构建问题:参考问题
- 问题4-Q过程问题
- c++这个问题的问题在哪里?(带参数的构造函数)