Fehlermeldung in assert.h



  • Abgesehn davon solltest du trotzdem lieber den standardkonformen Header verwenden: cassert.



  • Hallo,

    vorher habe ich folgendes stehen:

    #include <math.h>
    #include <iostream>
    #include <fstream>
    #include <stdio.h>
    #include <cstdio>
    #include <stdlib.h>
    #include <string>
    using namespace std;
    #include "C:\Dokumente und Einstellungen\FlorianK\Eigene Dateien\Visual Studio 2005\Projects\SCAI 150507\SCAI 150507\bitio.h" ;
    // Für zlib
    #include <assert.h>
    

    Zuerst hatte ich kein ; hinter dem include, aber der Fehler tritt auch mit auf.

    Abgesehn davon solltest du trotzdem lieber den standardkonformen Header verwenden: cassert.

    Ich möchte zlib verwenden und habe den Header von dort zum Teil übernommen. Daher wird assert.h überhaupt nur eingebunden und benötigt. Ich weiß nicht 100%ig, was an jeder Stelle gemacht wird, und lasse es deshalb bei dem "original" Kopf.

    floriank



  • #include <cmath>
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <cassert>
    
    #include "C:\\Dokumente und Einstellungen\\FlorianK\\Eigene Dateien\\Visual Studio 2005\\Projects\\SCAI 150507\\SCAI 150507\\bitio.h"
    

    ...



  • Ogott... Sagt dir "Relative Pfade" etwas? 😉



  • Ogott... Sagt dir "Relative Pfade" etwas? 😉

    Nein leider nicht. Ich bin leider kein Programmierexperte, erst recht nicht, wenn es darum geht irgendetwas mit einzubinden, muss dies aber nun für eine Diplomarbeit in Mathematik leider machen.

    @(D)Evil
    vielen Dank. Der Fehler ist nun behoben.
    Nun habe ich mehr oder weniger dasselbe Problem in zconf.h, wobei dies wiederum gar nicht in meinem Programm eingebunden wurde, sondern in zlib.h, welche ich eingebunden habe. Mein Anfang sieht nun wie folgt aus:

    #include <stdio.h>
    #include <cstdio>
    #include <stdlib.h>
    #include <string>
    // Für zlib
    #include <cassert>
    #include "C:\\Dokumente und Einstellungen\\FlorianK\\Eigene Dateien\\Visual Studio 2005\\Projects\\SCAI 150507\\SCAI 150507\\bitio.h"
    #include "C:\\Dokumente und Einstellungen\\FlorianK\\Eigene Dateien\\Visual Studio 2005\\Projects\\SCAI 150507\\SCAI 150507\\zlib.h"
    
    #if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
    #  include <fcntl.h>
    #  include <io.h>
    #  define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
    #else
    #  define SET_BINARY_MODE(file)
    #endif
    
    #define CHUNK 16384
    

    Der Kopf von zlib.h so:

    #ifndef ZLIB_H
    #define ZLIB_H
    #include "C:\\Dokumente und Einstellungen\\FlorianK\\Eigene Dateien\\Visual Studio 2005\\Projects\\SCAI 150507\\SCAI 150507\\zconf.h"
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #define ZLIB_VERSION "1.2.3"
    #define ZLIB_VERNUM 0x1230
    

    und bei zconf.h kommt die Fehlermeldung hier:

    #ifndef FAR
    #  define FAR
    #endif
    
    #if !defined(__MACTYPES__)
    typedef unsigned char  Byte;  /* 8 bits */
    #endif
    typedef unsigned int   uInt;  /* 16 bits or more */
    typedef unsigned long  uLong; /* 32 bits or more */
    

    Und zwar dort an der Stelle des typedef unsigned char Byte

    Die Fehlermeldung ist nun:

    1>c:\dokumente und einstellungen\floriank\eigene dateien\visual studio 2005\projects\scai 150507\scai 150507\zconf.h(261) : error C2144: Syntaxfehler: 'unsigned char' sollte auf ';' folgen

    Mein Prof. kann leider selber nicht in c oder c++ programmieren, so muss ich mir leider alles selber irgendwie aneignen.
    Ich hoffe der Fehler ist nun auch noch einfach zu beheben.

    Danke
    floriank



  • Wenn ich raten müsste, würde ich sagen, das fehlende Semikolon gehört ans Ende der "bitio.h". Was sind denn die letzten Definitionen in der Datei?

    (der Präprozessor baut aus allen #include's eine große CPP-Datei (genannt "Übersetzungseinheit") und dadurch wird der Fehler vermutlich nicht am Ende der unvollständigen Deklaration gemeldet, sondern am Anfang der nächsten Deklaration - und die steht nunmal im nachfolgend eingebundenen Header)

    PS @relative Pfade: Wenn du einfach nur #include "bitio.h" eingibst, beginnt der Präprozessor im aktuellen Projektpfad mit der Suche nach der Datei 😉



  • @floriank
    Vielleicht solltest du bei deinen includes auch mal aufräumen. Am Besten ist es du nimmst nur die Standardheader.
    Also aus

    #include <stdio.h>
    #include <cstdio> //stdio.h und cstdio sind prinzipiell das Gleiche, cstdio ist Standard
    #include <stdlib.h> //statt dessen cstdlib
    #include <string>
    

    mach

    #include <cstdio>
    #include <cstdlib>
    #include <string>
    

    Wobei du noch testen solltest ob du cstdio und cstdlib überhaupt brauchst (einfach mal auskommentieren).



  • CStoll schrieb:

    Wenn ich raten müsste, würde ich sagen, das fehlende Semikolon gehört ans Ende der "bitio.h". Was sind denn die letzten Definitionen in der Datei?

    (der Präprozessor baut aus allen #include's eine große CPP-Datei (genannt "Übersetzungseinheit") und dadurch wird der Fehler vermutlich nicht am Ende der unvollständigen Deklaration gemeldet, sondern am Anfang der nächsten Deklaration - und die steht nunmal im nachfolgend eingebundenen Header)

    PS @relative Pfade: Wenn du einfach nur #include "bitio.h" eingibst, beginnt der Präprozessor im aktuellen Projektpfad mit der Suche nach der Datei 😉

    Hallo,

    vielen Dank, genau hier war der Fehler. Nur da habe ich natürlich nicht gesucht.

    Das mit den Pfaden habe ich schon gehört, allerdings war mir der Name unbekannt. Da aber meine .h Dateien woanders liegen, muss ich den kompletten Pfad angeben.

    Danke
    floriank



  • hmm kannst es auch bei VC++ als Additional Include Directory angeben und dann mit <..> anstelle von "Pfad\..." inkludieren.



  • Hallo,

    das compilieren klappt nun, allerdings habe ich noch ein Problem beim linken. Als Fehlermeldung tritt dort:

    1>LINK : fatal error LNK1104: Datei "libc.c" kann nicht geöffnet werden.

    auf.
    Kann mir da jemand helfen?

    Danke
    Floriank


Anmelden zum Antworten