Wie kann ich den Namen (nicht den Path) einer aktuell laufenden Datei herausfinden, und das möglichst schlank bzw. kurz gelöst?

... komplette Frage anzeigen

1 Antwort

Den Namen des aktuellen Programms bekommst Du über argv[0] in

int main( int argc, char *argv[] )

Das ist natürlich eine ausführbare Datei (und nicht "irgendwas.c"). Manche Compiler bieten als Erweiterung globale Variablen gleichen Inhalts an (__argv__).

Die Standard-Makros __FILE__ und __LINE__ werden vom Präprozessor durch die aktuellen Werte in der laufenden Übersetzungseinheit ersetzt. Ob der Dateiname dabei einen Pfad enthält, kommt darauf an, wie der Compiler aufgerufen wurde.

Mit etwas Tricksen kannst Du diese Werte automatisch übergeben lassen:

bib.h:

#define test(x) test_fl(x, __FILE__, __LINE__)
void test_fl ( int x, char const *file, int const line );

bib.c:

void test_fl ( int x, char const *file, int const line )
{
 if (x<0) printf( "%s(%d): negative value in test(%d)\\n", file, line, x );
}

Dann würde der Aufruf test(-123) in main.c etwa zu dieser Ausgabe führen:

main.c(42): negative value in test(-123)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Ucanaskme
04.05.2016, 15:34

Danke! 

0

Was möchtest Du wissen?