Argumente bei Funktionsübergabe



  • hi,

    ich hab mir eine funktion gebastelt bei der argumente übergeben werden. Ist eigentlich auch so wie es scheinbar fast überall geschrieben wird.

    va_start(pArgumente, sText);
    vsprintf(sTextPuffer, sText, pArgumente);
    va_end(pArgumente);
    

    das problem ist, wenn ich float werte übergeben möchte, das die Anwendung mit Runtime Error R6002 -floating point not loaded abschmiert.

    Auf der MS seite hab ich irgendwo sowas hier gefunden

    va_start(pArgumente, sText);
    if (sText != NULL)
    {
    _vsnprintf(sTextPuffer, sizeof(sTextPuffer), sText, pArgumente);
    }
    va_end(pArgumente);
    

    hier habe ich aber dann das problem das nur die ersten 3 buchstaben gefolgt von buchstabensalat ausgelesen werden. hab auch schon einiges durchprobiert, aber entweder kommt runtime error oder das abgehackte.

    weiss einer rat?



  • klingelheimer schrieb:

    Runtime Error R6002 -floating point not loaded

    scheinbar hast du in den projekteinstellungen irgendwo eingestellt, dass dein programm keine fliesskommaunterstützung braucht...



  • ich bin die einstellungen duchgegangen und habe nichts gefunden das dem enstsprechen würde. habe dann google bemüht aber der hat auch nichts gefunden. dort viel mir aber in einem tutorial was.

    mein codeschnipsel befindet sich in einer dll die in einer opengl anwendung verwendet wird. ich habe in der dll dann folgendes geschrieben um zu sehen ob float überhaupt geht

    float arr = 1.001f; 
    char test[256]; 
    sprintf(test,"%f",arr);
    MessageBox(NULL,test,"testing",MB_OK);
    

    es funktionierte und auf einmal funktionierte auch der erstgenannte codeschnipsel im ersten posting. wenn ich dann die messagebox rausnehme und den rest drinstehen lasse funktioniert alles soweit so wies soll. sprintf() ist dafür scheinbar verantwortlich, denn nur die floatvariable drinzulassen bringt wieder den runtime error.


Anmelden zum Antworten