Forum: PC-Programmierung program_invocation_name unter mingw?


von eagle user (Gast)


Lesenswert?

Unter Linux mit der glibc gibt ja diese externe Variable um den Namen 
des eigenen Programms zu finden. Wenn ich ein wenig portabel 
programmieren möchte (nur ein wenig), wie macht das unter Windows? Geht 
das mit mingw und gcc? windows.h will ich jedenfalls nicht einbinden.

Bonusfrage: geht das unter xBSD? Ja, da gibt's getprogname(), deshalb 
ist es nicht so wichtig. Danke schon mal für sachdienliche Hinweise!

von Timmo H. (masterfx)


Lesenswert?

printf("%s\n", argv[0]);

ist nicht ausreichend?

WinAPI: GetModuleFileName, aber windows.h willst du ja nicht.

argv[0] ist zumindest das portabelste, wenns global sein soll kopierst 
du es halt in ein globales char array

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Timmo H. schrieb:
> printf("%s\n", argv[0]);
>
> ist nicht ausreichend?

Sollte es sein, denn laut man-Page:
1
      program_invocation_name contains the name that was used to invoke the
2
       calling program.  This is the same as the value of argv[0] in main(),
3
       with the difference that the scope of program_invocation_name is
4
       global.

von eagle user (Gast)


Lesenswert?

Grummel, alles muss man selber machen (basename() ist ja auch nicht so 
eindeutig definiert). Aber gut, wenn ihr meint, zurück zur Natur (oder 
so).

Zwischendurch gab es größere Probleme. Das CRC-Modul vom STM32 ging 
nicht:
1
RCC->AHB1ENR |= 1 < AHB1_CRC;
Der gcc findet aber auch garnichts ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.