Meine nullPointcheck Funktion:'va_start' in Funktion mit fester Parameterfehler
template<typename T, typename... Args>
bool __nullPointCheck(T first, Args... args)
{
bool ret = true;
va_list vl;
auto n = sizeof...(args);
va_start(vl, n);
for (auto i = 0; i <= n; ++i)
{
auto p = va_arg(vl, T);
if (!p)
{
ret = false;
}
}
va_end(vl);
return ret;
}
aber ich bin immer NDK Build-Fehler wie folgt:
'va_start' used in function with fixed args
va_start(vl, n);
, wenn ich ändern, um die zweite param in va_start zuerst wie folgt:
va_start(vl, first);
NDK-build-Export den Fehler wie folgt:
0.123. 'va_start' used in function with fixed args
va_start(vl, first);
^
E:/ANDROID_HOME/android-ndk-r10c/toolchains/llvm-3.5/prebuilt/windows-x86_64/bin
\..\lib\clang\3.5\include\stdarg.h:33:29: note:
expanded from macro 'va_start'
#define va_start(ap, param) __builtin_va_start(ap, param)
Es gibt keine Fehler in vs2013, aber der Code kann der NDK-build Bühne
eine variadic Vorlage ist nicht das selbe, was die alte c vararg Liste Funktion. willst du sowas wie [this] (http://coliru.stacked-crooked.com/a/e69bba38673a8cd3)? –
[OT]: '__nullPointCheck' ist ein reservierter Bezeichner –
Durch Entfernen aller va_list verwandten Code, bekomme ich endlich meinen Code mit Hilfe von Parameter-Pack wie folgt übergeben: std :: array arr = {params ...} und iterieren das Array in einer Schleife. Aber ich habe viel von deiner Antwort gelernt. @ Piotr Skotnicki Vielen Dank! –
rontgen