default-dateiname in header-datei festlegen?



  • Globale Variable in den Header geht auch:

    #ifndef mwalib
        #define mwalib
    
    #endif
    
    #ifdef mwalib
    
    const char defaultName[] = "mwl.dat";
    
    void getFilename (char* filename);
    void writeDataFile (char mode, char* cArr);
    int* readDataFile (char* filename, int* pmwAnz);
    void displayMW (int mwArr[], int mwAnz, char* fileName);
    void getMin(int mwArr[], int mwAnz, int* pmin, int* pminInd);
    void getMax(int mwArr[], int mwAnz, int* pmax, int* pmaxInd);
    double amw (int mwArr[], int mwAnz);
    
    #endif
    


  • Was macht denn der Include-Guard für einen Sinn? Sollte das nicht eher so aussehen?

    #ifndef mwalib
    #    define mwalib
    
    /* der rest */
    
    #endif
    


  • const char defaultName[] = "mwl.dat";
    

    habe das jetzt verwendet, aber ich erhalte "Error: mwalib.cpp(10,28):Undefined symbol 'defname'".

    kann ich

    strcpy(filename, defname);
    

    verwenden um diesen default namen zu verwenden? oder wie mache ich das am besten?



  • moni, du musst schon wissen, was du da anstellst, sonst wird das nie was.
    du musst die richtigen variablennamen benutzen. defname und defaultName sind nicht das gleiche. ich hoffe, das verstehst du.



  • ja schon klar. das hab ich nur falsch hier rein kopiert. die nachem stimmen schon. aber warum funktioniert das nicht?



  • Also zuerst Murks posten und dann behaupten bei mir stimmt das schon, ist etwas schwammig, das glaubt Dir keiner ;). Und, mal ehrlich irgendein Fehler muss ja wohl drin sein sonst würde es funktionieren, gell?

    Stell bitte ein vollständiges Codebeispiel zusammen und lösch alles was für das Problem nicht relevant ist raus, sonst können wir Dir allenfalls mit raten helfen... Und ein "Hm, schau nochmal nach ob Du es wirklich richtig geschrieben hast" willst Du nicht hören, oder?



  • #ifndef mwalib
    	#define mwalib
    
    const char defname[]="mwl.dat";
    
    #endif
    

    der vordefinierte name soll jetzt da unten rein, wenn einfach return gedrückt wird.

    void getFilename (char* filename) {
      gets(filename);
      if (strlen (filename)==0)
    		strcpy (filename, defname);
        else /*leer*/;
    }
    


  • @moni
    Anstatt gets() solltest du fgets() verwenden, ansonsten kann es leicht zu einem Bufferoverflow kommen ⚠



  • ist fgets nicht zum lesen aus dateien?



  • moniduse schrieb:

    #ifndef mwalib
    	#define mwalib
    
    const char defname[]="mwl.dat";
    
    #endif
    

    der vordefinierte name soll jetzt da unten rein, wenn einfach return gedrückt wird.

    void getFilename (char* filename) {
      gets(filename);
      if (strlen (filename)==0)
    		strcpy (filename, defname);
        else /*leer*/;
    }
    

    das funktioniert soweit, aber ich bekomme folgenden fehler:

    Warn : mwwrite.cpp(33,2):'defname' is declared but never used
    Warn : MWALIB.H(5,22):Cannot create pre-compiled header: initialized data in header


Anmelden zum Antworten