如何在Clang AST C ++中检测静态函数

时间:2018-08-23 01:01:57

标签: c++ clang abstract-syntax-tree

在Clang ASt C ++中浏览FunctionDecl时如何检测该函数是否为静态。 请提出建议。

1 个答案:

答案 0 :(得分:0)

'FunctionDecl :: getStorageClass()'可用于获取在声明中编写的存储类说明符, 或“ NamedDecl :: getFormalLinkage()”以获取所声明符号的实际链接。

例如:

             /* getStorageClass() , getFormalLinkage() */
       void func0(); /* SC_None   , ExternalLinkage */
static void func1(); /* SC_Static , InternalLinkage */
extern void func2(); /* SC_Extern , ExternalLinkage */

static void func3(); /* SC_Static , InternalLinkage */
       void func3(); /* SC_None   , InternalLinkage */
extern void func3(); /* SC_Extern , InternalLinkage */

class C
{
  static void func4(); /* SC_Static , ExternalLinkage */
};