8

私は大きなユニットに取り組んでいます。ユニットが大きくなりすぎたので、3 つのユニットに分割することにしました。Mainこれらのユニット名が、Common、および であるとしましょうObjectsMainユニットは他の2つのユニットを両方Objects使用し、ユニットもユニットを使用しCommonます。これらの条件を参照する必要がある 3 つのユニットすべてにコードがあります。

問題は、これらの条件を定義する 3 つのユニットのどれに関係なく、他の 2 つのユニットにはそれらが表示されないことです。私は確かにそれらを 3 つのユニットすべてにコピーしたくありません。これらのユニットは複数のプロジェクトで使用されるため、プロジェクトでそれらを定義したくありません。その場合、これを使用するすべてのプロジェクトは条件を気にする必要はありません。

これらの条件を、プロジェクトで定義せずに、3 つのユニットすべてが参照できるように定義できますか?

4

1 に答える 1

8

条件定義の唯一のオプションは、それらを .inc ファイルに入れ、それを 3 つのユニットすべてに含めることです。

ただし、条件付き定義は、$IFDEF条件付きコンパイルを実現する唯一の方法ではありません。条件の代わりにブール定数を使用することを検討してください。3 つのユニットすべてで表示されている限り、$IFではなくを使用できます$IFDEF

{$IF MyConstant}
  ....
{$IFEND}

{$IF}または、XE3 以降では、で終了できます{$ENDIF}

個人的には、条件付きでコンパイルしようとしており、条件にグローバル スコープを持たせたくない場合は、この後者のアプローチを好む傾向があります。

于 2013-03-15T21:31:32.060 に答える