funktionen verhindern deklaration

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • funktionen verhindern deklaration

    hi,

    ich habe in c diesen code hier geschrieben, in java würd der glaub ich einwandfrei funzen (is lange her, aber kann mich nicht an ein derartiges problem erinnern). dieser code hier geht einwandfrei:

    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main()
    4. {
    5. char eingabe[200];
    6. int a = 0;
    7. int b = 5;
    8. fgets(eingabe, 200, stdin);
    9. }
    Alles anzeigen


    bei diesem bekomme ich eine fehlermeldung

    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. int main()
    4. {
    5. char eingabe[200];
    6. int a = 0;
    7. fgets(eingabe, 200, stdin);
    8. int b = 5;
    9. }
    Alles anzeigen


    fehler:

    error C2143: Syntaxfehler: Es fehlt ';' vor 'Typ'


    compiler vc.

    könnte das am compiler liegen ? zumindest scheint es so als ob diese fgets funktion das deklarieren von b verhindert, anders kann ich mir das nich erklärn, aber wieso ?

    freu mich schon auf antworten, denn das nervt bissl...
  • Die meisten älteren Compiler und die, die C noch nicht nach den neuesten Standards übersetzen, bekommen Schwierigkeiten mit deinem 2. Quelltext.

    Die von deinem VC herausgegebene Fehlermeldung führt allerdings in die Irre.

    Die eigentlich Ursache, das das nicht compiliert wird, ist das Deklarieren der Variabele nach dem ersten Funktionsaufruf in einem Quelltext.

    Dies ist erst ab C99 der Fall und da laut folgendem Link eingeschränkt:
    209.85.129.132/search?q=cache:…nk&gl=de&client=firefox-a[/url]

    Siehe Abschnitt 6 in dem Link. Obwohl da die Einschränkung ignoriert wird?

    Der VC und Borland ( + Nachfolger ) beherrschen nur wenige Bruchteile von C99.
    Mehr davon sollten der gcc4.x.y akzeptieren und der open Watcom 1.8 glaub ich auch. x und y -> seht was da aktuell ist.
    Diese gehen teilweise sogar über C99 hinaus und akzeptieren Quelltext, dessen Standard noch beraten wird.
    Denkt dran wer letztere Futures, also die noch nicht abgesegneten, verwendet bewegt sich auf wackligem Boden ;)

    Also der gcc 4.4.? in der Einstellung C99 übersetzt den Quellcode ohne Murren.

    MfG bcc-fan

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bcc-fan ()

  • truespin schrieb:

    thx, truespin

    wieso bedankst du dich, hab doch garnix gemacht ;)

    ne. so genau will ich das erstmal nicht wissen, werde da später nochmal mehr zu lesen. bis dahin is erstmal nur wichitg dass es nicht irgendwie an mir liegt, bzw. nur indirekt und ich syntaxmäßig trotzdem alles richtig hab.

    und - falls es wen interessiert: ich schreib grad nen programm das zu jedem boolschen ausdruck anhand der termnummer den funktionswert bestimmt und ihn dann auflistet mitsamt termnummer. cool ne :thumbsup:
  • zugegeben etwas misslich ausgedrückt. mal wieder sone eigenproduktion von mir.

    also was ich mache ist ne funktionstabelle zu einem booleschen ausdruck mit 'UND' und 'ODER' verknüpfungen aufzustellen, man könnte diesen ausdruck auch als schaltnetz mit nur 'UND' und 'ODER' gattern ausdrücken. mal schauen ob ich vielleicht noch xor, nor, antivalenz und co dazunehme. mit termnummern mein ich nun die aktuelle belegung der variablen bei jedem durchlauf, also z.b. ist termnummer 2 bei 5 variablen die folge 00010. a hat den wert 0, b = 1 etc. anhand dieser folge berechne ich dann den funktionswert, nur halt mit nicht nur einer, sondern mit jeder möglichen belegung ;) ist ne gute übung, so hab ich auch in java ungefähr angefangen).

    noch ne frage: hab eigentlich keine ahnung vom release compile. also wenn ich in vc auf release compile, dann kommt ja dann ne exe datei raus. ist die dann auf jedem computer ausführbar (nehme an unter linux nicht) und erfordert das irgendwelche zusätzlichen programme wie z.b. net2.0 zum ausführen. reicht die exe alleine aus ? habs in c geschrieben.
  • Das kannst du in deinem VC alles einstellen.
    Hab keinen - deshalb musst du deine Bedienungsanleitung selbst lesen ;)

    Welche VC- Version nutzt du?

    Du kannst einmal eine EXE erstellen, die weitgehend den Regeln von C entspricht und wo alle benötigten Bibliotheken mit eingelinkt werden.
    Das Ergebnis sollte auf jedem Rechner mit den Windowsversion laufen, die du in deinem Compiler eingestellt hast - Bei anderen Compilern gibt es da Schalter auf der Kommandozeile oder in der IDE in entsprechende Menu's. Auch die benötigte CPU und weiteres kannst du da oft einstellen.

    Dann kannst du die EXE so linken das die benötigten Bibliotheken separat zur Verfügung stehen müssen - Hier sollte die kleinste EXE das Ergebnis sein.
    Da sollte auf dem Zielrechner also die Bibliothek verfügbar sein.

    Weiter kannst du die Microsoft-Besonderheiten, also NET und anderes nutzen, dann müssen auf dem Zielrechner die entsprechenden Dateien in der richtigen Form vorhanden sein.

    Das ist eine sehr gestraffte Fassung.

    Zum Einstieg würde ich empfehlen, nutze deinen VC so wie er nach der Installation auf dem PC eingerichtet wird, und kümmere dich um die vielen Möglichkeiten erst, wenn das erforderlich ist.

    MfG bcc-fan