Main Content

진입점 함수 입력값의 유형 지정하기

C와 C++는 정적으로 유형이 지정되는 언어이므로 코드 생성기는 코드 생성 중에 생성된 코드에 있는 모든 변수의 클래스와 크기를 확인해야 합니다. 특정 변수 유형을 갖는 C/C++ 코드를 생성하려면 진입점 함수에 대한 모든 입력의 유형을 지정해야 합니다. 입력 유형 지정은 코드 생성 워크플로에서 핵심적인 단계입니다.

진입점 함수가 입력값을 갖지 않는 경우 이 단계를 건너뛸 수 있습니다. 진입점 함수가 아닌 함수에 대한 입력값의 클래스와 크기를 지정할 필요는 없습니다.

입력 유형 지정 방법

진입점 함수에 대한 모든 입력값의 클래스와 크기를 지정해야 합니다. 클래스, 구조체, 셀형 배열과 같은 집합체 유형의 경우 각 속성, 필드, 요소의 클래스와 크기도 각각 지정해야 합니다. 입력 유형은 MATLAB® Coder™ 앱에서, 명령줄에서 -args 옵션과 함께 codegen 명령을 사용하여, MATLAB 진입점 함수에서 함수 인수 유효성 검사(arguments 블록)를 사용하여 또는 MATLAB 코드에서 사전 조건 지정(assert 문)을 사용하여 지정할 수 있습니다. 다음 표에서는 이러한 각 방법의 장점과 단점을 간략하게 설명합니다.

방법장점단점

Specify Types of Entry-Point Inputs Using the App

  • 집합체 데이터형(예: 셀 또는 구조체)을 지정하는 경우에도 쉽게 사용할 수 있음

  • 원래 MATLAB 코드를 변경하지 않음

  • 코드 생성기가 유형 정의를 프로젝트 파일에 저장함

  • 입력 유형이 MATLAB 코드에서 문서화되지 않음

Specify Input Types at the Command Line

  • 입력값이 적은 프로토타이핑 함수를 위해 설계됨

  • 고정 크기, 비집합체 입력값이나 예제에서 지정할 수 있는 입력값에 쉽게 사용할 수 있음

  • 원래 MATLAB 코드를 변경하지 않음

  • 스크립트를 사용하지 않는 한 코드를 생성할 때마다 입력값을 지정해야 함

  • 가변 크기 입력값이나 집합체 입력값의 구문이 복잡할 수 있음

Use Function Argument Validation to Specify Entry-Point Input Types

  • 전용 코드 블록에서 코드 생성에 필요한 인수의 측면을 지정할 수 있음

  • assert 문을 사용한 입력 유형 지정에 비해 더 명확하고 간결한 MATLAB 코드가 생성됨

  • MATLAB Coder 앱이나 명령줄에서 코드를 생성할 때마다 입력 유형을 지정하지 않으므로 코드 생성이 간소화됨

  • MATLAB 진입점 함수에서 인수 지정을 문서화함

Specify Input Types Using assert Statements in MATLAB Code

  • MATLAB Coder 앱이나 명령줄에서 코드를 생성할 때마다 입력 유형을 지정하지 않으므로 코드 생성이 간소화됨

  • MATLAB 코드에서 인수 지정을 문서화함

  • 복소수 구문을 사용함

  • assert 문은 MATLAB 코드 내 어디에서든 나타날 수 있으므로 코드 생성 중이나 런타임 시에 발생하는 입력 유형 지정과 관련된 문제를 진단하기 어려울 수 있음

사용되지 않는 입력값

사용되지 않는 입력 변수를 갖는 진입점 함수가 하나 이상 있는 경우, 사용하는 입력 유형 지정 방법에 따라 코드 생성 시 특정 사항을 고려해야 합니다.

  • codegen 함수를 -args 옵션과 함께 사용하여 입력 유형을 지정하는 경우 사용되지 않는 입력 변수를 지정할 필요가 없습니다. 그러나 사용되는 모든 변수는 함수 선언에서 사용되지 않는 모든 변수 앞에 나타나야 합니다. 사용되지 않는 변수와 지정되지 않은 변수는 생성된 코드에 나타나지 않습니다.

  • MATLAB 진입점 함수에 대한 모든 입력값이 사용되지 않고 codegen 함수를 -args 옵션과 함께 사용하여 입력 유형을 지정하는 경우, 빈 셀형 배열 {}-args에 전달하여 입력값이 없는 C/C++ 함수를 생성할 수 있습니다.

  • MATLAB Coder 앱을 사용하여 입력 유형을 지정하는 경우 사용되지 않는 입력값의 유형을 지정해야 합니다. 사용되지 않는 입력값은 생성된 코드에 나타납니다.

  • arguments 블록이나 assert 문을 사용하여 MATLAB 코드에 입력 유형을 정의하는 경우 사용되지 않는 입력값의 유형을 지정해야 합니다. 물결표 문자(~)를 사용하여 사용되지 않는 입력값을 지정할 수 없습니다. 사용되지 않는 입력값은 생성된 코드에 나타납니다.

  • 고정소수점 fi (Fixed-Point Designer) 객체인 입력값을 지정하려면 연결된 numerictype (Fixed-Point Designer) 객체와 fimath (Fixed-Point Designer) 객체를 구성해야 합니다.

  • 진입점 함수에서 다중 시그니처 MEX 함수를 생성하려면 동일한 진입점 함수에 대해 여러 개의 -args를 지정합니다. 생성된 MEX 함수는 코드 생성 중에 제공한 여러 개의 시그니처와 함께 작동합니다. 다중 시그니처 MEX 함수 생성에 대한 자세한 내용은 Generate Code for Functions with Multiple Signatures 항목을 참조하십시오.

  • 주어진 형태의 빈 배열을 받는 MEX 함수, SIL 함수 또는 PIL 함수를 생성하는 경우 생성된 함수는 다른 형태의 빈 배열도 받습니다. MEX 함수, SIL 함수 또는 PIL 함수는 코드 생성 중에 지정된 배열의 형태와 일치하도록 빈 런타임 입력 배열의 형태를 변경합니다. Incompatibility with MATLAB Due to Resizing of Empty Arrays by MEX, SIL, and PIL Functions 항목을 참조하십시오.

참고 항목

관련 항목