在您的 SDK 目录中,您可以发现头文件 stdarg.h 实际上包含在 ./android-sdks/platform-tools/renderscript/clang-include/stdarg.h 中。如果你添加
#include "stdarg.h"
使用正常的包含语句,编译器似乎可以理解您在说什么。不过,除了编译之外,我没有实际的测试方法。
[编辑] 我刚刚在 Windows 中收到“llvm-rs-cc.exe 已停止工作”消息。来自控制台的堆栈转储显示在解析我添加的示例函数以查看 varargs 是否会编译时失败。这是堆栈转储。编译器每次都会崩溃。我的猜测是理论上支持它,但编译器没有正确处理它。
Stack dump:
0. engine.rs:882:32: current parser token ';'
1. engine.rs:876:1: parsing function body 'average'
2. engine.rs:876:1: in compound statement ('{}')
删除函数但保留标头包含后,以下内容进入控制台(没有崩溃):
C:\android-sdks\platform-tools\renderscript\clang-include\stdarg.h:30:9: error: unknown type name '__builtin_va_list'
C:\android-sdks\platform-tools\renderscript\clang-include\stdarg.h:48:9: error: unknown type name '__builtin_va_list'