Möglichkeiten von C und C++



  • Er hat unrecht.



  • Dieser jemand hat Recht.

    #include <stdlib.h>
    
    typedef struct bla { char foo[199];}bla;
    
    int main()
    {
      struct bla *foo = malloc(sizeof(struct bla));
      free(foo);
      return 0;
    }
    

    Dies lässt sich in C kompilieren aber in C++ nicht.

    gcc test.c -o output -W -Wall -std=c89 -pedantic
    
    g++ test.c -o output -W -Wall -std=c++98 -pedantic
    test.c: In function `int main()':
    test.c:7: error: invalid conversion from `void*' to `bla*'
    

    Begründung:

    Es liegt an der Typensicherheit in C++. Diese gibt es in C nicht und deswegen lässt sich das obige beispiel nicht mit C++ kompilieren obwohl es

    ANSI ISO C 89 und 99 konform ist.

    MfG



  • Raptor schrieb:

    Man könne mit C Programme programmieren, die in C++ nicht umsetzbar seien

    Das stimmt nicht, da C++ abwaertskompatibel zu C ist. Er wird eher gesagt haben, dass man mit C++ Programme programmieren kann, die mit C in der Art und Weise nicht moeglich sind.

    C++ ist nicht vollständig "abwärtskompatibel". In C gibt es den Defaultdatentyp int, man konnte hinter der Parameterliste die Datentypen angeben, static verhält sich anders (auf Lokalität bezogen) etc. pp.



  • Also, der, der im ersten Beitrag genannt wird, hat unrecht, nicht Raptor.



  • Whoa, liegt das heute dicht beieinander. OK, nicht jeder C-Code ist in C++ gültig, aber jedes Problem, das sich in C lösen lässt, lässt sich auch in C++ lösen.



  • 0xdeadbeef schrieb:

    Whoa, liegt das heute dicht beieinander. OK, nicht jeder C-Code ist in C++ gültig, aber jedes Problem, das sich in C lösen lässt, lässt sich auch in C++ lösen.

    Nun stellt sich die Frage wie henselstep das gemeint hat.



  • Es war tatsächlich gemeint, ob sich jedes mit C lösbare Problem in C++ lösen lässt. Nichtsdestotrotz finde ich es interessant, dass C++ doch nicht ganz abwärtskompatibel ist.



  • henselstep schrieb:

    Es war tatsächlich gemeint, ob sich jedes mit C lösbare Problem in C++ lösen lässt. Nichtsdestotrotz finde ich es interessant, dass C++ doch nicht ganz abwärtskompatibel ist.

    ursprünglich wurde c als grundlage für c++ genommen. aber c hat sich weiterentwickelt und c++ auch. dabei isses wieder auseinandergedriftet



  • eViLiSSiMo schrieb:

    Dieser jemand hat Recht.

    Nein, hat er nicht. Dein Beispiel zeigt nur Implementationsdetails. Grundsätzlich gilt aber das, was 0xdeadbeef schon gesagt hat. Jedes Problem, das sich mit C lösen lässt, kannst du auch in C++ umsetzen. Umgekehrt gilt das übrigens auch, wobei das immer eine Frage des Aufwands ist. Gerade wenn es um Templates geht.



  • groovemaster schrieb:

    eViLiSSiMo schrieb:

    Dieser jemand hat Recht.

    Nein, hat er nicht. Dein Beispiel zeigt nur Implementationsdetails. Grundsätzlich gilt aber das, was 0xdeadbeef schon gesagt hat. Jedes Problem, das sich mit C lösen lässt, kannst du auch in C++ umsetzen. Umgekehrt gilt das übrigens auch, wobei das immer eine Frage des Aufwands ist. Gerade wenn es um Templates geht.

    Nach dem sich geklärt hat das henselstep das anders gemeint hat als ich das verstanden hab, ist es richtig was du und Oxdeadbeef gesagt haben.

    Ich hab mit umsetzen , kompilieren verstanden.

    MfG



  • grundsätzlich lässt sich jedes problem das man mit einer sprache lösen kann auch mit einer anderen sprache lösen. ist halt wie schon gesagt wurde nur eine frage des aufwandes.


Anmelden zum Antworten