【问题标题】:how to detect static function in Clang AST C++如何在 Clang AST C++ 中检测静态函数
【发布时间】:2018-08-23 01:01:56
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    '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 */
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2023-03-04
      • 2013-09-04
      • 1970-01-01
      • 2010-10-10
      • 2011-06-21
      相关资源
      最近更新 更多