有没有办法阻止Clang将va_list视为__va_list_tag?

时间:2017-09-06 21:00:38

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

出于某种原因,当我在其中声明带有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 ++代码。

0 个答案:

没有答案