1

Xcode では、(具体的には C または C++ で) ファイルを使用するときはいつでも、ファイルへのフル パスを指定する必要がありますが、gcc または g++ では、コードと同じディレクトリにある場合は指定する必要はありません。それを参照しています。

これには理由がありますか?もしそうなら、それを修正する方法はありますか?

4

3 に答える 3

1

問題は、「XCode」が相対パスを受け入れないことではありません。問題は、コードの現在の作業ディレクトリが、考えているものとは異なることです。コメントにあるように、 を使用chdirしてファイルのある場所に移動するか、現在の作業ディレクトリを考慮した相対パスを使用できます (getcwd()現在の作業ディレクトリを取得するために使用できます)。

コマンド ラインでgccまたはを使用している場合最終的なアプリケーションが実行されるディレクトリを制御できます。g++

于 2013-09-13T17:01:25.110 に答える
0

その理由は、「現在の作業ディレクトリ」という概念があるためです。したがって、あなたの fopen() などはそこから始まります。Unix では、シェルから、CWD が現在のディレクトリになります。MacOS のターミナル ウィンドウからコマンド ライン ツールを起動する場合も同様です。しかし、Xcode から開始するか、アプリを起動すると、CWD は別の場所にあります。

コメントで述べたように、呼び出しchdir()て現在の作業ディレクトリを開始したい場所に変更できます。その場合、フルパスを指定する必要はありません。

于 2013-09-13T17:03:37.107 に答える