Problem mit struct



  • Hallo,

    Ich habe ein Problem mit Strukturen:

    Wenn ich folgendes probiere

    struct Foo
    {
      int x;
    }; 
    
    int main()
    {
    	struct Foo f;
    	return 0;
    }
    

    bekomme ich folgende Fehler:

    error C2065: 'Foo' : undeclared identifier
    error C2146: syntax error : missing ';' before identifier 'f'
    error C2065: 'f' : undeclared identifier

    Und wenn ich das probiere

    typedef struct Foo
    {
      int x;
    }Foo; 
    
    int main()
    {
    	Foo f;
    	return 0;
    }
    

    Bekomme ich das hier:

    error C2275: 'Foo' : illegal use of this type as an expression
    error C2146: syntax error : missing ';' before identifier 'f'
    error C2065: 'f' : undeclared identifier

    Das hier wiederum geht:

    struct Foo
    {
      int x;
    }f; 
    
    int main()
    {
    	f.x=5;
    	return 0;
    }
    

    Das finde ich schon komisch, da ich mich an diesen Beispielen orientiert habe:

    [url]
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-160610-and-highlight-is-struct.html
    [/url]

    [url]
    http://www.galileocomputing.de/openbook/c_von_a_bis_z/c_017_001.htm
    [/url]

    Meint ihr, dass es vielleicht daran liegt, das ich mit dem Visual Studio 2005 programmiere?
    Also das da irgendwas verstellt sein könnte?

    Ich habe erst ein leeres Win32 Konsolenprojekt erstellt und dann die C-Datei hinzugefügt.

    Bei den Projekteigenschaften habe ich eingestellt, das der Compiler das Projekt als C-Code compilieren soll.



  • alle 3 codes sehen eigentlich fehlerfrei aus. vielleicht compilierst du es doch als c++? in c++ ist vieles recht seltsam...



  • philosoph schrieb:

    struct Foo
    {
      int x;
    }; 
    
    int main()
    {
    	struct Foo f;
    	return 0;
    }
    

    ... hab ich auf Linux Fedora FC3 mit gcc 3.4.2 übersetzt, völlig ohne Fehlermeldungen, mittels "gcc -o tst tst.c"...



  • Jo danke,

    hab meinen Fehler gefunden - hatte vor dem

    struct Foo f;
    

    noch eine printf - Anweisung.

    Das darf man ja in C nicht - ist aber ein Beweiß, dass ich wirklich in C programmiere 😉



  • Aha... und wie sollen wir den Fehler finden, wenn du uns nicht den Originalcode zeigst? Bitte nächstes mal wirklich den echten Code posten, dann klappt's auch mit der Fehlerdiagnose.

    MfG

    GPC


Anmelden zum Antworten