出于某种原因,当我在其中声明带有va_list类型的变量和函数时,Clang AST会在内部将它们视为__va_list_tag。这是有问题的,因为后者是一个内置定义,不包含在stdarg.h中。有没有办法告诉Clang不要替换它?
以下是一些示例代码:
#include <cstdarg>
typedef int (*process_args)(va_list args);
void useless_func() {
process_args useless_fp;
}
当我用规范类型替换声明类型时,我得到以下结果:
#include <cstdarg>
typedef int (*process_args)(va_list args);
void useless_func() {
int (*useless_fp)(__va_list_tag *);
}
我理想情况下将__va_list_tag *
部分替换为va_list
,因此生成的代码可以编译为C ++代码。