Makro __FILE__ Anpassung



  • Hi,
    kann man __FILE__ zur Compile Zeit anpassen? Also dass man anstatt "C:\Projects\HelloWorld\hello.cpp" sowas wie "HelloWorld\hello.cpp" bekommt. Mir schwebt da Template Metaprogramming vor, hab aber keine Ahnung ob und wie es damit gehen könnte.



  • in __FILE__ muss nur der Name der Datei stehen. Mein g++ liefert zb nur den Namen der Datei, nicht deren kompletten Pfad.
    __FILE__ und die anderen vordefinierten Makros dürfen außerdem nicht Subjekt von #define oder #undef sein.
    Du könntest nur mit irgendwelchen Stringbearbeitungsroutinen arbeiten.
    Oder, wenn du deinen Compiler nennst, verschieb ich dich in das entsprechende Forum, damit du nachfragen kannst, ob man das Format irgendwie ändern kann.
    Zur Compile Zeit geht das höchstens mit irgendwelchen pragmas, die sind dann aber wieder compilerspezifisch.



  • Als Compiler nutz ich hauptsächlich den MSC 7.1.
    OK, da wie du sagst der g++ nur den Dateinamen liefert, ist das wohl Compiler spezifisch. Hatte halt gedacht __FILE__ liefert immer den kompletten Pfad. Dann kann ich das wohl nur zur Laufzeit ändern.



  • Schau Dir mal das Ergebnis in der Release an. Da hab ich nen relativen Pfad im gegensatz zum Debug....

    (VC 7.1)



  • mit dieser funktion (hab ich nicht selbst geschrieben, ist von David Scherfgen) kannst du den Pfad eintfernen lassen:

    DLLEXPORT const char* RemoveDir(const char* pcFilename)
    {
    	int iLastBackSlash;
    	int iChar;
    
    	// Letzten Back-Slash ("\") suchen
    	iLastBackSlash = -1;
    	iChar = 0;
    	while(pcFilename[iChar] != 0)
    	{
    		if(pcFilename[iChar] == '\\') iLastBackSlash = iChar;
    		iChar++;
    	}
    
    	// String ab dem letzten Back-Slash plus 1 zurückliefern
    	return pcFilename + iLastBackSlash + 1;
    }
    


  • Na da würd ich aber mit std::string rangehen.

    BTW liefert der VC7.1 in der Release den Relatieven Pfad und in der Debugversion den kompletten Pfad. Für Fehlerdiagnosen doch ideal ? 🤡



  • Dass der MSC im Release Build den relativen Pfad liefert, kann ich bei mir nicht bestätigen. Bis auf die Tatsache, dass die Laufwerksangabe fehlt (also zB c:) sieht es genau wie beim Debug Build aus. Gibts da vielleicht Compilerflags die das beeinflussen?



  • Das können dir die Leute aus dem Visual C++ Forum besser beantworten 😉



  • Dieser Thread wurde von Moderator/in davie aus dem Forum C++ in das Forum MFC mit dem Visual C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten