1

Cプログラムのすべての関数/変数からアクセスできるフォルダのパスはどこに保存できますか?元。パスにdo_input.exeという実行可能ファイルがありc:\tests\myprog\bin\do_input.exe、別の実行可能ファイルC:\tools\degreesToDms.exeなどがあります。これらをどこにどのように保存すればよいですか?

私はそれらをすべてのプロジェクトのファイルにインクルードしたヘッダーファイルに文字列として保存しましたが、誰かがこれを行うことを思いとどまらせました。彼らは正しいですか?

4

2 に答える 2

1

それらが同じままであれば、.hパスを参照するすべてのさまざまな.cファイルに含まれる""ヘッダーファイルでこれらのパスを定義することに問題はありません。ただし、これが実行されるすべてのコンピューターは異なるパス(" Tests"ではなく" test")を持つ可能性があるため、これは非常にリスクの高いプログラミングであり、単一のマシンまたは制御するマシンのセットで実行する場合にのみ安全です。直接。

パスが変更される場合は、これらのパスの保存場所(静的文字配列など)を作成し、これらをフェッチして動的にリセットできるようにするメソッドを用意する必要があります(たとえば、出力ファイルを「results」に書き込む代わりに) 、おそらくユーザーはファイルを「」に書き込むために物事を変更したいと思うでしょう/tmp。完全にあなたがあなたのコードで何をしているか、そしてあなたが書いているツールが何をするかによって異なります。

于 2012-06-23T14:36:43.803 に答える
1

私はそれらをすべてのプロジェクトのファイルにインクルードしたヘッダーファイルに文字列として保存しましたが、誰かがこれを行うことを思いとどまらせました。彼らは正しいですか?

はい、それらは絶対に正しいです。ファイルシステム内のパスを含むインストール固有の文字列をコンパイル済みコードに「焼き付ける」ことは適切な決定ではありません。一部のキーファイルの場所を変更するために単に再コンパイルする必要があるためです。これにより、チームの他のメンバーがテストを実行する柔軟性が制限され、自動テスト環境でテストが自動的に実行されなくなる可能性があります。

より良い解決策は、キーディレクトリの場所を含むプレーンテキストの構成ファイルと、そのファイルを読み取り、実行時に正しい場所を生成する関数を使用することです。

または、プログラムのコマンドラインパラメータとしてキーディレクトリの場所を指定することもできます。このようにして、プログラムを実行するユーザーは、再コンパイルせずに正しい場所を設定できます。

于 2012-06-23T14:38:22.270 に答える