C/C++でプログラムを実行しているディレクトリのフルパスを取得する、プラットフォームやファイルシステムに依存しない方法はありますか?カレント・ワーキング・ディレクトリと混同しないように。(clibやSTLのような標準的なものでない限り、ライブラリの提案はしないでください)。
(もし、プラットフォームやファイルシステムにとらわれない方法がなければ、WindowsやLinuxで特定のファイルシステムで動作する提案も歓迎します。)
ライブラリなしの標準的な方法を望むならディレクトリの概念は標準には含まれていません。
標準に近いlibへの(ポータブルな)依存があってもいいということであれば: Boost's filesystem libraryを使い、initial_path()を要求してください。
IMHOでは、それは良いカルマを持った、限りなく標準に近い方法です(Boostは確立された高品質のライブラリ群です)。
いいえ、標準的な方法はありません。C/C++の標準では、ディレクトリ(または他のファイルシステムの組織)の存在を考慮していないと思います。
Windowsの場合、GetModuleFileName()は、hModuleパラメータがNULLに設定されている場合、現在のプロセスの実行ファイルのフルパスを返します。 Linuxの場合はお手上げです。
また、カレントディレクトリなのか、プログラムイメージや実行ファイルが存在するディレクトリなのかを明確にする必要があります。 現状ではこの点が少し曖昧になっています。