Funktionen definieren in VisualC++2008



  • Ich dachte es ist vieleicht sinnvoll mit C anzufangen und später auf C++ umzusteigen. Ich arbeite mit visual c++ 2008 express so wies aussieht ist das voll auf c++ ausgelegt. Hat bisher aber alles reibungslos geklappt. Bis auf Fehler die ich mir selbst zuzuschrieben hatte!?



  • Erikson schrieb:

    Ich dachte es ist vieleicht sinnvoll mit C anzufangen und später auf C++ umzusteigen.

    Ist durchaus möglich, aber nicht sinnvoll. Auf diese Weise sammelst du nur massenhaft Programmiertaktiken, die in C notwendig sind, aber in C++ als schlechter Stil (oder schlimmeres) angesehen werden.



  • Habe auch noch icc win 32 aufm Rechner da hab ich den code von oben mal reincopiert und der zeigt mir dann an defaulting to int. Der compiler scheint das also zu verstehen aber dafür zeigt er mir immer folgenden Fehler:

    syntax error; missing semicolon before 'end of input'

    diesen fehler zeigte mir der compiler früher schonmal. Da ich beim besten willen kein Fehlendes semicolon entdecken konnte wechselte ich damals auf visual c++.

    Weiss echt nich was ich machen soll iwie muss dass doch funktionieren. Würde gerne bei visual c++ bleiben komme damit gut klar.



  • Erikson schrieb:

    Ich arbeite mit visual c++ 2008 express so wies aussieht ist das voll auf c++ ausgelegt.

    Meine (ANSI-) C Programme von 1993 kann ich damit übersetzten.
    Bei jeder neuen VS Version meckert der Compiler aber immer etwas neues von wegen unsicheren Funktionen an. Die Warnungen kann man aber abschalten.



  • Erikson schrieb:

    Weiss echt nich was ich machen soll iwie muss dass doch funktionieren.

    Gehe davon aus, dass der Compiler immer Recht hat.
    Alternativ kannst du deinen Code auch mit Onlinecompilern austesten, z.B.
    http://codepad.org
    http://ideone.com

    Erikson schrieb:

    Würde gerne bei visual c++ bleiben komme damit gut klar.

    Dann mache das doch. Und zu Beginn jedes Projektes bietet sich an:

    #undef UNICODE
    #undef _UNICODE
    #pragma warning( disable:4996 )
    

    nebst des o.g. Schalters /TC.



  • Erikson schrieb:

    syntax error; missing semicolon before 'end of input'

    Schau mal nach, ob du in der letzten Zeile (die mit der } ) auch die Enter-Taste gedrückt hast.
    Es muss dann noch eine Zeile 19 geben, die aber leer ist.


  • Mod

    Der icc ist auch wieder ein reinrassiger C Compiler, mit dem funktioniert das mit dem default int.

    Falls du weiterhin einen C++ Compiler benutzen möchtest, sei dir im klaren, dass C keine Untermenge von C++ ist, auch wenn das oft gesagt wird. Ein paar Dinge gehen eben nicht. Und Sachen aus dem C99-Standard meistens erst recht nicht. Oftmals kann man C++-Compilern aber auch beibringen, sich wie ein C Compiler zu benehmen (wenn man auf C99-Kompatibilität verzichtet). Wie dir schon gesagt wurde, kannst du mal ausprobieren, der Datei einfach eine .c Endung zu geben.



  • So zur Rückmeldung es Funktioniert jetzt in Visual C++ durch umbennnen der datei auf datei.c Finde die Lösung nicht gerade gut den das scheint nur zu funkitonieren wenn man vorher ein Jungfräuliches Projekt öffnet. Also müsste ich daran immer denken. Es muss doch gehen , dass von Visual C++ von Anfang an eine .c und keine.cpp Datei angelegt wird!? Die Option zum umstellen auf TC finde ich leider nicht.

    Ach so und was genau (Bitte für Dumme 😋 ) versteht denn der compiler nicht das er überhaupt int als default annhemen muss. Ich müsste ihm ja auch sagen können verwende int und dann wär gut oder nicht? Wenn ja wo? Wie? An welcher Stelle muss da int stehen?



  • Bei einer Funktionsdefinition mußt du normalerweise einen Rückgabetyp angeben, d.h. mit int new_line() oder void new_line() ist auch ein C++ Compiler zufrieden. Du hattest dort oben keinen Rückgabetyp angegeben und deshalb den Compiler verwirrt.



  • Wenn du aber einen anderen Rückgabetyp als void angibst, musst du auch einen Wert mit return zurückgeben.

    Den Rückgabewert brauchst du aber nicht auswerten.
    Z.B. gibt printf die Anzahl der geschriebenen Zeichen zurück oder im Fehlerfall eine negative Zahl.



  • Danke jetzt hab ichs verstanden. Einfach Typ des Rückgabewertes vor meine definierte Funktion schreiben. Dann klappts auch. Steht ein paar seiten weiter auch in dem Buch. Das hätte man dort allerdings früher erwähnen können. Wenn man schon ein Buch schriebt müsste ja bekannt sein das es da mit einigen compilern probleme geben kann. Na ja ich kann jetzt jedenfalls in Ruhe weiter dran arbeiten.

    Nur das dauerhafte umstellen von Visual C++ 2008 Express gelingt mir immernoch nicht. Ich finde die option einfach nicht wo ich auf TC umstellen kann. Wenn einer hier auch damit arbeitet wäre es echt nett wenn er mir das nochmal genau erläutern konnte. Den von Wutz erklärten Weg scheint es nicht zu geben. Oder ich bin zu dumm es zu finden.

    DANKE!



  • Dann taugt der Erlenkötter also auch nichts, naja, wieder mal ein Streichkandidat.



  • Na ja das würde ich nicht gleich sagen. An sich gefällt mir das Buch ja gut. Hab mehr verstanden als in meiner Ausbildung. Hätte mir mal damals schon ein Buch dazu kaufen sollen. Die Erklärungen sind auf jeden Fall einfach und verständlich. Wenn man wirklich noch nie was von C gehört hat ist das Buch wohl nicht die beste Wahl.


Anmelden zum Antworten