비활성화 구조: 코드 실행 막기
- 업데이트 날짜:2025-08-27
- 3분 (읽기 시간)
비활성화 구조는 정확히 하나가 컴파일되고 실행되는 여러 서브다이어그램을 포함합니다. 실행할 서브다이어그램은 컴파일 시에 결정됩니다. 활성화되어 있지 않은 서브다이어그램 내의 코드는 실행 시나 컴파일 시에 실행되지 않습니다. 비활성화 구조를 사용하여 블록다이어그램의 코드 섹션을 비활성화시킬 수 있습니다.
조건적 비활성화 구조
다음과 같이 조건적 비활성화 구조에는 하나 이상의 서브다이어그램이나 케이스가 있으며, LabVIEW는 서브다이어그램의 조건 설정에 따라 정확히 이 중 하나를 실행 기간 동안 사용합니다. 컴파일할 때, LabVIEW는 조건적 비활성화 구조의 비활성화 서브다이어그램의 어떤 코드도 포함시키지 않습니다.
어떤 특정 코드가 컴파일되고 실행될지의 조건을 정의하려면 조건적 비활성화 구조를 사용합니다. 예를 들어, VI의 하나의 섹션이 타겟 지정인 경우, 이 코드를 조건적 비활성화 구조에 놓고 설정하여 특정 타겟에서 실행되도록 할 수 있습니다. Windows, Mac, Unix 시스템 및 FPGA 타겟에서 조건적 비활성화 구조를 설정할 수 있습니다.
다이어그램 비활성화 또는 타입 특수화구조로 조건적 비활성화 구조를 변환하는 경우, 조건적 비활성화 구조의 조건은 다이어그램 비활성화 또는 타입 특수화 구조로 전달되지 않습니다.
조건적 비활성화 구조 사용에 대한 예제는 labview\examples\Structures\Disable Structures 디렉토리에 있는 Conditional Disable Structure VI를 참조하십시오.
다이어그램 비활성화 구조
다음의 다이어그램 비활성화 구조에서 보이는 것처럼, LabVIEW는 컴파일을 할 때 비활성화 서브다이어그램에 어떤 코드도 포함시키지 않습니다.
실행 시 컴파일되지 않도록 블록다이어그램의 특정 코드를 비활성화하려면, 다이어그램 비활성화 구조를 사용하십시오. 예를 들어, 다이어그램 비활성화 구조를 디버깅 도구로 사용하여, 코드를 주석 처리하고, 코드를 대체한 후, 구조의 비활성화 서브다이어그램에서 코드를 삭제하지 않고 VI를 컴파일할 수 있습니다.
다이어그램 비활성화 구조 사용에 대한 예제는 labview\examples\Structures\Disable Structures 디렉토리의 [다이어그램 비활성화 구조] VI를 참조하십시오.
타입 특수화 구조
타입 특수화 구조는 아래와 같이 하나 또는 그 이상의 서브다이어그램을 가지며 서브다이어그램의 순서와 컴파일 결과에 따라서 LabVIEW는 하나를 정확하게 컴파일하고 실행합니다. 컴파일 및 실행 시, LabVIEW는 타입 특수화 구조의 비활성화 서브다이어그램의 코드는 전혀 포함시키지 않습니다.
타입 특수화 구조를 사용하여 특정 데이터 타입에 대해 가변 VI.vim의 코드 일부를 사용자 정의하거나 가변 VI가 사용 가능한 데이터 타입만 받도록 합니다. 예를 들어, 타입 특수화 구조를 사용하여 가변 VI가 입력 데이터가 정수일 때와 정수 배열일 때 각각 다르게 동작하도록 설정할 수 있습니다. 이렇게하면 가변 VI는 두 데이터 타입에 대해 모두 예상대로 동작하게 됩니다.
타입 특수화 구조를 사용하는 예제는 labview\examples\Malleable VIs\Type Specialization Structure\Malleable VIs - Type Specialization Structure.lvproj를 참조하십시오.
비활성화 구조의 사용자 정의 객체
LabVIEW가 다이어그램 비활성화 구조의 비활성화 서브다이어그램이나 조건적 비활성화 구조의 비활성화 서브다이어그램, 또는 타입 특수화 구조에서 SubVI와 타입 정의 같은 사용자 정의 객체들이 있는 VI를 로드하는 경우, LabVIEW는 이 객체들을 메모리에 로드하지 않습니다. 그러나, VI의 블록다이어그램을 디스플레이할 때 LabVIEW가 객체를 찾지 못하는 경우, 물음표 아이콘이 찾을 수 없는 객체에 나타납니다. LabVIEW가 VI를 컴파일하고 실행할 때 코드를 포함하지 않기 때문에 VI는 깨지지 않습니다. 또한, subVI를 포함하는 서브다이어그램을 활성화하면, LabVIEW는 이와 같이 찾을 수 없는 객체를 자동으로 검색하지 않습니다.
찾을 수 없는 subVI의 위치를 다이어그램 비활성화 구조에서 LabVIEW로 하여금 강제로 찾게 하려면, 찾을 수 없는 subVI를 포함하는 서브다이어그램을 활성화하고 subVI를 호출하는 VI를 저장합니다. 다음에 subVI를 호출하는 VI를 열면, LabVIEW가 subVI를 검색합니다. 그러면 subVI를 포함하는 서브다이어그램을 다시 비활성화할 수 있습니다.
|
노트 LabVIEW는 비활성화 서브다이어그램의 코드 구문을 확인합니다. 그러나 비활성화 서브다이어그램내에 깨진 코드가 있어도 VI는 컴파일되고 실행됩니다. |
빌드된 어플리케이션에서 비활성화 구조의 동작
비활성화 구조는 코드의 어떤 부분이 빌드된 어플리케이션에 포함될지를 결정합니다. 어떤 VI가 비활성화 다이어그램에서만 호출되는 경우에는 빌드에서 제외됩니다. 어플리케이션이 빌드된 이후에는 LabVIEW는 조건적 비활성화 구조의 조건 또는 타입 특수화 구조의 컴파일 결과를 다시 평가하지 않습니다.