無効ストラクチャ: コードの実行を回避する
- 更新日2025-08-27
- 7分で読める
無効ストラクチャには、複数のサブダイアグラムが含まれ、そのうち1つだけがコンパイルされ、実行されます。実行するサブダイアグラムは、コンパイル時に決まります。非アクティブなサブダイアグラム内のコードは、ランタイム時の実行もコンパイルも行われません。無効ストラクチャを使用して、ブロックダイアグラム内のコードの一部を非アクティブにすることができます。
条件無効ストラクチャ
以下のように表示される条件無効ストラクチャには、1つまたは複数のサブダイアグラム (ケース) が含まれ、サブダイアグラムの条件の設定に応じてそのうち1つだけが実行時にLabVIEWによって使用されます。条件無効ストラクチャの非アクティブなサブダイアグラムのコードは、コンパイル時に除外されます。
条件無効ストラクチャは、特定のコードをコンパイルし実行する条件を定義するために使用します。たとえば、VIに含まれる特定のターゲットに固有のコードは、条件無効ストラクチャに入れることで、特定のターゲットに対してのみ実行されるよう構成することができます。Windows、Mac、Unixの各システム、またはFPGAターゲットに対応する条件無効ストラクチャを構成することが可能です。
ダイアグラム無効ストラクチャまたはタイプ特化ストラクチャに条件無効ストラクチャを変換した場合、条件無効ストラクチャの条件は、ダイアグラム無効ストラクチャまたはタイプ特化ストラクチャには移行されません。
条件無効ストラクチャを使用するサンプルについては、labview\examples\Structures\Disable StructuresディレクトリのConditional Disable Structure VIを参照してください。
ダイアグラム無効ストラクチャ
以下のように表示されるダイアグラム無効ストラクチャで、無効サブダイアグラムに含まれるコードは、コンパイル時に除外されます。
ブロックダイアグラム内の一部のコードを無効にしてランタイム時にコンパイルされないようにするためには、ダイアグラム無効ストラクチャを使用します。たとえば、ダイアグラム無効ストラクチャをデバッグツールとして使用すると、そのストラクチャの無効サブダイアグラムに含まれるコードを削除することなく、コードのコメントアウト、コードの置換、およびVIのコンパイルを行うことができます。
ダイアグラム無効ストラクチャの使用例については、labview\examples\Structures\Disable StructuresディレクトリのDiagram Disable Structure VIを参照してください。
タイプ特化ストラクチャ
タイプ特化ストラクチャには、次のように1つまたは複数のサブダイアグラムがあり、サブダイアグラムの順とコンパイル結果に基づいて、LabVIEWはその中の1つをコンパイルして実行します。LabVIEWは、コンパイルおよび実行の際、タイプ特化ストラクチャのアクティブでないサブダイアグラムのコードを一切使用しません。
タイプ特化ストラクチャを使用すると、順応性VI (.vim) のコードの一部を特定のデータタイプ用にカスタマイズしたり、許容データタイプの一部のみを順応性VIが受け入れるように強制したりできます。たとえば、タイプ特化ストラクチャを使用して、入力データが整数のときと整数の配列のときで、順応性VIが異なる特定の動作を行うように構成できます。
タイプ特化ストラクチャの使用例については、labview\examples\Malleable VIs\Type Specialization Structure\Malleable VIs - Type Specialization Structure.lvprojを参照してください。
無効ストラクチャのユーザ定義オブジェクト
ユーザ定義オブジェクトを含むVI (サブVI、タイプ定義など) が、ダイアグラム無効ストラクチャの無効サブダイアグラム、または条件無効ストラクチャあるいはタイプ特化ストラクチャの非アクティブなサブダイアグラムにロードされる場合、これらのオブジェクトはメモリにはロードされません。ただし、VIのブロックダイアグラムを表示すると、LabVIEWが見つけられないオブジェクトは疑問符と共に表示されます。VI自身は、コードがコンパイル時または実行時に除外されるため、破損しません。さらに、サブVIのあるサブダイアグラムを有効にしても、LabVIEWはこれらの見つからないオブジェクトを自動的に検索しません。
ダイアグラム無効ストラクチャ内の見つからないサブVIを強制的に検出するには、そのサブVIを含むサブダイアグラムを有効にして、サブVIを呼び出すVIを保存します。サブVIを呼び出すVIを次に開いたときに、LabVIEWがサブVIを検索します。その後、サブVIを含むサブダイアグラムを再度無効にできます。
|
メモ LabVIEWでは、非アクティブなサブダイアグラムのコードの構造を検証します。ただし、非アクティブなサブダイアグラム内に不正なコードがあってもVIはコンパイル、実行されます。 |
ビルドアプリケーション内の無効ストラクチャの動作
無効ストラクチャは、コードのどのセクションがビルドアプリケーションに含まれるかを決定します。無効にされているダイアグラム内でのみ呼び出されているVIは、ビルドアプリケーションから除外されます。アプリケーションがビルドされると、LabVIEWは、条件無効ストラクチャの条件またはタイプ特化ストラクチャのコンパイル結果を再評価しません。