Übergabe NICHT POD Typs va_list über ...
-
Hallo,
ich habe eine Funktion (aus LAM/MPI)
inline void _REAL_MPI_::Pcontrol(const int level, ...) { va_list ap; va_start(ap, level); (void)MPI_Pcontrol(level, ap); va_end(ap); }Jetzt meckert er jedesmal beim Kompilieren.
/usr/user4/foam/OpenFOAM/OpenFOAM-1.2/src/lam-7.1.1/platforms/tru64GccOpt/include/mpi2cxx/functions_inln.h: In function »void PMPI::Pcontrol(int, ...)«:
/usr/user4/foam/OpenFOAM/OpenFOAM-1.2/src/lam-7.1.1/platforms/tru64GccOpt/include/mpi2cxx/functions_inln.h:249: Warnung: Objekte des Nicht-POD-Typs »struct va_list« können nicht über »...« übergeben werden; Aufruf wird zur Laufzeit abbrechenWie ist das zu beheben, daß ich keine Warnungen mehr bekomme? Und woran liegt dieser Fehler überhaupt?
mfg
-
Das Problem ist, dass du die Ellipse (...) mit einem Nicht-POD-Typen aufrufst (POD ist in den C++-FAQ erklärt). Du hast keine Möglichkeit mehr mittels der va_list zu entscheiden, was das mal für ein Typ war.
Edit: Hmm Blindheit... ich sehe was du bezwecken willst, aber das geht meiner Meinung nach so nicht. Eine va_list kannst du nicht wieder in die Ellipse stecken und drauf hoffen, dass wieder das selbe bei rauskommt.