Funktionen und Fehler



  • Hi!

    Habe 2 Fragen die für MICH unlösbar sind. Bräuchte da etwas Fachmännische unterstützung:

    1.) Ich habe gehört das mann mit pragma Fehlermeldungen Abstellen kann. Stimmt das und wenn Ja wie geht das.

    2.) Wie kann ich eine Funktion schreiben bei der 1 Parameter optional ist so dass Beispielsweise Hallo(1) genauso geht wie Hallo(1,1)

    mfg Bauarbeiterjoe



  • zu 1.) die #pragma-Direktiven sind von Compiler zu Compiler untschiedlich. Schau also in deine Dokumentation 🙂

    zu 2.) dürfte IMHO mit C nicht gehen. In C++ kannst du Funktionen überladen.



  • thx für die schnelle antwort. Was meinst du mit "überladen"



  • Mit überladen einer Funktion ist das gemeint, dass du eine Funktion mit dem gleichen Namen hast, die aber unterschiedliche Parameter haben kann, oder unterschiedliche Rückgabewerte.

    Beispiel aus der cmath-Headerdatei aus C++:

    #include <cmath>
    
    float cos( float ); 
    double cos( double ); 
    long double cos( long double );
    

    Und je nach dem, welchen Datentyp übergeben wird bzw. zurückgegeben wird, wird entschieden welche der 3 Funktionen die Richtige ist.



  • 💡 Danke jezt hab ichs kappiert



  • bauabrieterjoe schrieb:

    1.) Ich habe gehört das mann mit pragma Fehlermeldungen Abstellen kann. Stimmt das und wenn Ja wie geht das.

    Fehlermeldungen abstellen geht nicht, wäre ja auch irgendwie unlogisch. Du kannst maximal Warnungen abstellen. Besser ist es aber, wenn du erstmal deinen Code überarbeitest, so dass erst gar keine Warnmeldungen auftreten. Wobei das nicht immer möglich ist, da es durchaus zu vernachlässigende Warnungen gibt.

    walk0n schrieb:

    zu 2.) dürfte IMHO mit C nicht gehen. In C++ kannst du Funktionen überladen.

    ... oder verwendest default Parameter.



  • bauabrieterjoe schrieb:

    2.) Wie kann ich eine Funktion schreiben bei der 1 Parameter optional ist so dass Beispielsweise Hallo(1) genauso geht wie Hallo(1,1)

    hey joe,
    in c kann man das mit va_lists machen.
    merke: was c++ kann, kann c schon lange!

    void f (int param1, ...)
    {
       ...
    }
    
    void main() 
    { 
       f (1);
       f (1,2);
       f (1,2,3);
       ...
    }
    

    guckt ihr: http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html



  • net schrieb:

    in c kann man das mit va_lists machen.
    merke: was c++ kann, kann c schon lange!

    Klar kannst du das machen - jetzt mußt du nur noch zur Laufzeit herausfinden, wieviele Parameter (und was für welche) da angekommen sind. Und dafür gibt es keine Standard-Methode. (bei deinem Code-Beispiel bezweifle ich z.B., daß du klar unterscheiden kannst, wieviele Parameter gekommen sind)



  • CStoll schrieb:

    net schrieb:

    in c kann man das mit va_lists machen.
    merke: was c++ kann, kann c schon lange!

    Klar kannst du das machen - jetzt mußt du nur noch zur Laufzeit herausfinden, wieviele Parameter (und was für welche) da angekommen sind. Und dafür gibt es keine Standard-Methode.

    da hast du natürlich recht. aber bestimmt kann man was mit #defines tricksen um c++-ähnliche default params oder überladungen nachzubilden.


Anmelden zum Antworten