Existuje metóda na získanie úplnej cesty k adresáru, v ktorom sa program spúšťa pomocou jazyka C/C++, nezávislá od platformy a súborového systému? Nezamieňať s aktuálnym pracovným adresárom. (Prosím, nenavrhujte knižnice, pokiaľ to nie sú štandardné knižnice ako clib alebo STL.)
(Ak'nie je k dispozícii metóda kompatibilná s platformou/súborovým systémom, vítané sú aj návrhy, ktoré fungujú vo Windows a Linuxe pre konkrétne súborové systémy).
Ak chcete štandardný spôsob bez knižníc: Celý koncept adresára nie je v norme zahrnutý.
Ak súhlasíte s tým, že nejaká (prenosná) závislosť na takmer štandardnej lib je v poriadku: Použite Boost's filesystem library a požiadajte o initial_path().
IMHO je to'najbližšie, ako sa môžete dostať, s dobrou karmou (Boost je dobre zavedená vysoko kvalitná sada knižníc)
Nie, neexistuje žiadny štandardný spôsob. Domnievam sa, že štandardy C/C++ vôbec neuvažujú o existencii adresárov (alebo iných organizácií súborového systému).
V systéme Windows funkcia GetModuleFileName() vráti úplnú cestu k spustiteľnému súboru aktuálneho procesu, ak je parameter hModule nastavený na hodnotu NULL. V prípade Linuxu si neviem rady.
Tiež by ste si mali ujasniť, či chcete aktuálny adresár alebo adresár, v ktorom sa nachádza obraz/spustiteľný súbor programu. V súčasnej podobe je vaša otázka v tomto bode trochu nejednoznačná.