code-fehler finden



  • hallo zusammen,

    ich habe gerade einige aufgaben vor mir, bei denen code-schnipsel gegeben sind und man die fehler finden und berichtigen muss.

    sieht so aus:

    #include<stdio.h>

    void main(void)
    {
    motd();
    return 0;
    }

    void motd()
    {
    printf("text");
    return;
    }

    müsste eigentlich ganz einfach sein. da ich aber erst gerade mit der sache anfange habe ich damit noch bischen probleme.

    wie geht das?

    ich hab auf jeden fall mal festgestellt, dass irgendwas mit der funktionen deklaration nicht stimmt.

    könnt ihr mir vllt. weiterhelfen?



  • #include <stdio.h>
    
    void motd()
    {
        printf("text");
    }
    
    int main()
    {
        motd();
        return 0;
    }
    


  • hallo ä,

    willst du mir mit deiner antwort sagen, dass ich es nur umdrehen muss?

    wenn ich es umgedreht im visual studio compile, dann bekomme ich nur fehler zurück ?!?!



  • siehe unten...
    :xmas2:



  • ten schrieb:

    johannes92 schrieb:

    #include<stdio.h>

    void main(void)
    {
    motd();
    return 0;
    }

    void motd()
    {
    printf("text");
    return;
    }

    #include<stdio.h>
    
    void main(void)     // kein fehler, aber eine warnung. eine hosted implementation verlangt nach 'int main()' 
    {
      motd();           // funktion ist dem compiler noch nicht bekannt. man bekommt hier eine warnung und zur laufzeit ist fehlverhalten möglich 
      return 0;         // fehler, wenn main als 'void' definiert ist. hätte main 'int' als rückgabewert, wär's überflüssig aber ok
    }
    
    void motd()
    {
      printf("text");
      return;          // überflüssig aber ok
    }
    


  • #include <iostream>
    
    void motd(void);
    
    int main(void)
    {
        motd();
        return 0;
    }
    
    void motd(void)
    {
        std::cout << "Text" << std::endl;
    }
    

    So sollte es eigentlich aussehen, wenn da schon unbedingt ne Funktion drin sein soll ...



  • (D)Evil schrieb:

    So sollte es eigentlich aussehen, wenn da schon unbedingt ne Funktion drin sein soll ...

    und wieso hast du das 'printf' ausgetauscht? das ist kein fehler gewesen.
    printf ist in c++ zwar nicht beliebt, aber auch nicht falsch...
    :xmas2:



  • Weil es einfach nicht zum sauberen Stil gehört... von mir aus kannst de es aber drin lassen -.-



  • @(D)Evil:

    Dann solltest du aber auch "void motd(void)" durch "void motd()" ersetzen, und "int main(void)" durch "int main()" 😉



  • (D)Evil schrieb:

    Weil es einfach nicht zum sauberen Stil gehört... von mir aus kannst de es aber drin lassen -.-

    Ist denn überhaupt sicher, daß johannes in C++ programmieren will? Das Originalprogramm sieht eher nach C aus.

    @johannes: Das hat auf jeden Fall nichts mit MFC zu tun. Kannst du mir bitte sagen, ob du lieber ins C-Board oder ins C++-Board verschoben werden willst?



  • Jop stimmt naja ... bei C natürlich printf ...

    @hustbaer: Wie wäre es mal wenn du dir mal den Standard anguckst?



  • ihr könnt natürlich weiter über die verwendung von printf diskutieren, ich verwende es gerne, ist meiner meinung nach übersichtlicher, aber ich zwig mal wo der fehler ist:

    #include<stdio.h>

    void main(void)
    {
    motd();
    return 0;
    }

    void motd()
    {
    printf("text");
    return;
    }

    1. modt muss oben deklaiert werden damit es in main verwendet werden kann.
    2. void wird von vielen kompilern nicht als main akzeptiert, desswegen am besten int nehmen.
    3. be return fehlen die klammern: return(0);
    4. return muss einen wert zurückgeben, return(); wäre unglültig
    5. void akzeptiert keinen rückgabewert, also entwerder return weglassen oder void in int ändern

    der funktionsfähige quelltext sieh also so aus:
    #include<stdio.h>
    void motd();

    int main()
    {
    motd();
    return(0);
    }

    void motd()
    {
    printf("text");
    }


Anmelden zum Antworten