Ü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 abbrechen

    Wie 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.


Anmelden zum Antworten