frage



  • #include "stdafx.h"
    #include "stdio.h"

    double x=5.5, y;
    double pow();

    int main()
    {
    y=double pow(1.0, x);
    printf("ergebnis:\t%f\n",y);
    return 0;
    }

    error C2660: 'pow': Funktion akzeptiert keine 2 Argumente

    Weiß jemand, was ich falsch gemacht habe?



  • deine pow funktion akzeptiert keine 2 argumente, ist doch offensichtlich. ansonsten math.h inkludieren und die deklaration da oben rausschmeissen.



  • PartyHard! schrieb:

    deine pow funktion akzeptiert keine 2 argumente, ist doch offensichtlich. ansonsten math.h inkludieren und die deklaration da oben rausschmeissen.

    ok und wie kommt das? Gibt es bei der funktino unterschiede in C und C++?
    Wäre dankbar für noch eine so schnelle antwort 🙂



  • Im Klartext: du darfst nicht Funktionsprototypen notieren zu Standard-Funktionen, die du benutzen willst. Hier versucht der Compiler also nicht die pow-Funktion, die du in der Doku oder sonstwo gefunden hast, aufzurufen, sondern deine eigens deklarierte. Und die hat nunmal 0 Parameter. Also so vorgehen, wie bereits beschrieben wurde.



  • Ergänzung:

    Sieh mal in die Doku zu pow():

    http://msdn.microsoft.com/en-us/library/dt5dakze(VS.71).aspx

    Relativ weit unten steht, welchen Header du einbinden musst (und bei anderen Funktionen eventuell auch eine lib). Danach solltest du immer sehen, wenn du eine Funktion einsetzen willst. Meist gibt es da auch direkt Anwendungsbeispiele.



  • _matze schrieb:

    Im Klartext: du darfst nicht Funktionsprototypen notieren zu Standard-Funktionen, die du benutzen willst. Hier versucht der Compiler also nicht die pow-Funktion, die du in der Doku oder sonstwo gefunden hast, aufzurufen, sondern deine eigens deklarierte. Und die hat nunmal 0 Parameter. Also so vorgehen, wie bereits beschrieben wurde.

    ok, in einem buch habe ich ein beispielprogramm:

    #include <stdio.h>
    double pow();
    int main(){
    double x=2.5,y;
    y =pow(x,3.0);
    printf("..."...);
    return 0; }

    ich verstehe dieses beispielprogramm nicht... der funktion, die deklariert wird, werden doch auch keine Parameter übergeben?



  • _matze schrieb:

    Hier versucht der Compiler also nicht die pow-Funktion, die du in der Doku oder sonstwo gefunden hast, aufzurufen, sondern deine eigens deklarierte. Und die hat nunmal 0 Parameter.

    Nein, die hat eine unbestimmte Anzahl an Parametern, das ist in C ein himmelweiter Unterschied. Und in C99 soweit ich weiss auch immernoch zulässig.

    @newling:
    Das Beispielprogramm ist im Sinne von C zumindest bis ANSI C '89 ok, auch wenn man diese Art der Deklaration nicht mehr verwenden sollte. Für Bibliotheksfunktionen solltest Du den entsprechenden Header einbinden, für eigene Funktionen in jedem Fall die komplette Parameterliste angeben.
    Ansonsten: Benutz mal einen C-Compiler statt eines C++-Compilers 😃



  • newling schrieb:

    ok und wie kommt das? Gibt es bei der funktino unterschiede in C und C++?

    in c++ gibts mehrere überladungen für 'pow(base,exp)' (mindestens 5 oder so). das gibt seltsame fehlermeldungen, wenn der exponent z.b. ein 'char' ist. mit sowas musste dich in C zum glück nicht belasten. deshalb, wie LordJaxom schon sagte: 'Benutz mal einen C-Compiler statt eines C++-Compilers'
    🙂



  • ok werd ich machen danke für die antworten!



  • Im Klartext: du darfst nicht Funktionsprototypen notieren zu Standard-Funktionen, die du benutzen willst.

    Hmm, je nach Standpunkt ist auch das Gegenteil wahr: du musst Funktionsprototypen notieren zu Standard-Funktionen, die du benutzen willst.
    🙂


Anmelden zum Antworten