Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用libclang获取typedef type和name?_C_Typedef_Libclang - Fatal编程技术网

使用libclang获取typedef type和name?

使用libclang获取typedef type和name?,c,typedef,libclang,C,Typedef,Libclang,如果typedef是匿名结构之类的,我可以得到它们的名称和类型,但是普通的typedef(例如typedef int size\t)我只能得到size\t。如何获取“int”类型?您不能这样做。C没有类型的运行时名称,事实上,当您使用typedef作为int时,只有编译器关心类型名称。运行时将无法区分它们。几乎晚了一年,但这是我在搜索这个确切问题时得到的第一个结果,所以这里有一个更好的答案: 在中,该函数将获取类型定义的源类型,并获取类型定义的目标类型。为了澄清,对于生产线: typedef a

如果typedef是匿名结构之类的,我可以得到它们的名称和类型,但是普通的typedef(例如
typedef int size\t
)我只能得到
size\t
。如何获取“int”类型?

您不能这样做。C没有类型的运行时名称,事实上,当您使用
typedef
作为
int
时,只有编译器关心类型名称。运行时将无法区分它们。

几乎晚了一年,但这是我在搜索这个确切问题时得到的第一个结果,所以这里有一个更好的答案:

在中,该函数将获取类型定义的源类型,并获取类型定义的目标类型。为了澄清,对于生产线:

typedef a b


clang\u gettypedeclunderlyingtype
返回
a
,而
clang\u getCursorType
返回
b
(两者都作为
CXType
)。

Libclang应该允许您这样做。它允许您执行运行时无法确定的其他操作。Libclang不编译;它只是以API的形式提供AST输出,这个问题与Lua有什么关系?我使用的是libclang,包装器是用LuaJIT制作的。我想我已经在帖子中添加了这一点,但我想我已经晚了一年才放弃,因为我仍然在解决我的问题。谢谢