Hilfe problem mit include



  • Hallo allerseits,

    ich arbeite zum aller ersten mal mit VS C++ leider mit folgender Fehlermeldung:
    C:\C-Learning\Project01\test01.c(4) : error C2065: 'function2' : nichtdeklarierter Bezeichner
    ich habe eine Projekt erstellt mit folgenden Dateien:
    C:\C-Learning\Project01\test01.c

    #include <stdio.h>
    void main(void)
    {
    function2;
    }
    

    C:\C-Learning\Project01\test02.c

    include <stdio.h>
    #include <test02.h>
    void function02(void)
    {
    	struct
    	{
    		float Geschwindigkeit;
    	    short Leistung;
    		short Zylinder;
    		char  Kraftstoff;
    	}Mercedes ={195.0,125,8,'s'};
    
    	printf("Vitesse est:%f\n",Mercedes.Geschwindigkeit);
    
    }
    

    C:\C-Learning\Project01\test02.h

    #ifndef test02.h
    #define test02.h
    #endif
    extern void function2(void)
    

    ganz ehrlich ich habe keine Ahnung an was es liegen könnte vielleicht ist da jemand, der bereit ist mir weiter zu helfen. ich wäre sehr dankbar.

    liebe Grüßle



  • #ifndef test02.h
    #define test02.h
    #endif
    extern void function2(void)
    

    das #ifdef soll wahrscheinlich ein include-guard-macro darstellen, odeR?
    das ist wichtig und sollte bei jeder heasdredatei benutzt werden, aber:

    1. alle sachen im header definiert man _zwischen_ dem #define und dem #endif.
    2. das mit dem . din dem Bezeichner könnte probleme verursachen, ich würd den durch einen unterstruich ersezten.

    Außerdem sollte das extern wegelassen werden.
    dies brauchst du nur, wenn du weißt, das in irgend einem hinzuzulinkendem objekt etwas definert ist, das du nicht über ein headerfile bekommst.
    (extern definitionen sind unsauber)

    deine test01.c benutz doch funktion2, also sollte si auch den entsprtechenden header includieren.
    Außerdem muss bei funktionsaufrufen die klammer mit dran, auch bei leerer parameterliste

    es sollte also so aussehen:

    test02.c:

    include <stdio.h>
    #include <test02.h>
    void function02(void)
    {
        struct
        {
            float Geschwindigkeit;
            short Leistung;
            short Zylinder;
            char  Kraftstoff;
        }Mercedes ={195.0,125,8,'s'};
    
        printf("Vitesse est:%f\n",Mercedes.Geschwindigkeit);
    
    }
    

    in header datei gehören prototypen aller funktionen der zugehörigen c-Datei, die von außen sichtbar sein sollen
    test02.h:

    #ifndef test02_h
    #define test02_h
    
    void function2(void);
    
    #endif /* test02_h */
    

    test01.c

    #include "test02.h"
    void main(void)
    {
      function2();
    }
    


  • hallo,
    vielen dank für die schnelle Antwort.
    habe den Code wie Sie es vorgeschlagen angepaßt nur anstelle #include <test02.h>
    habe ich #include "test02.h" somit konnte ich fehlerfrei kompilieren leider bringt der Linker folgende Fehler Meldung:
    Linker-Vorgang läuft...
    test01.obj : error LNK2001: Nichtaufgeloestes externes Symbol _function2
    Debug/Project01.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise
    Fehler beim Ausführen von link.exe.

    Project01.exe - 2 Fehler, 0 Warnung(en)

    haben Sie vielleicht irgend eine Idee ?



  • Hallo,

    es hat funktioniert vielen dank kann jetzt gut schlafen:-)
    gute Nacht zusammen



  • myouness27 schrieb:

    hallo,
    habe ich #include "test02.h" somit konnte ich fehlerfrei kompilieren leider bringt der Linker folgende Fehler Meldung:

    Sorry, mein Fehler.
    Natürlich müssen da Anführungszeichen hin.

    die spitzen klammern heißen, dass nur in den standard includepfaden gesucht werden soll


Anmelden zum Antworten