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

how to detect static function in Clang AST C++

本文关键字:C++ AST 静态函数 Clang 何检测 检测      更新时间:2023-10-16

如何在 Clang ASt C++ 中遍历 FunctionDecl 时检测函数是否静态。 请指教。

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