이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
생성 코드에서 열거형 사용자 지정하기
코드 생성에서 열거형을 사용자 지정하려면, 클래스 정의의 정적 메서드 섹션에 다음 표에 나와 있는 사용자 지정된 메서드를 포함시키십시오.
메서드 | 설명 | 반환되거나 지정되는 디폴트 값 | 사용 시점 |
---|---|---|---|
| 디폴트 열거형 값을 반환합니다. | 열거형 클래스 정의에 있는 첫 번째 값 | 디폴트 값이 첫 번째 열거형 값과 다른 경우 원하는 디폴트 값을 반환하는 |
| 외부에서 정의된 열거형을 정의하는 파일을 지정합니다. |
| 외부에서 정의된 열거형을 사용하려면, 해당 유형을 정의하는 헤더 파일 경로를 반환하는 |
| 생성 코드에서 클래스 이름이 접두사가 되는지 여부를 지정합니다. |
| 생성 코드에서 클래스 이름이 접두사가 되도록 하려면 참고 C++11 열거형 클래스를 생성할 경우 코드 생성기는 이 정적 메서드를 무시합니다. |
generateEnumClass | C++11 열거형 클래스를 생성할지 여부를 지정합니다. | true — C++11 코드에 열거형 클래스가 생성됩니다. | C++11 코드를 생성할 때 특정 MATLAB® 열거형에 대해 일반 C 열거형을 생성하도록 코드 생성기에 지시하려면, generateEnumClass 메서드의 반환 값을 false 로 설정하십시오. Generate C++11 Code Containing Ordinary C Enumeration (MATLAB Coder) 항목을 참조하십시오. |
디폴트 열거형 값 지정하기
열거형으로 형변환된 변수의 값이 열거형 값 중 하나와 일치하지 않으면 다음 결과가 발생합니다.
생성된 MEX에서 오류를 보고합니다.
생성된 C/C++ 코드에서 변수의 값이 열거형 디폴트 값으로 바뀝니다.
별도로 지정하지 않으면 열거형 클래스 정의에 있는 첫 번째 값이 열거형의 디폴트 값이 됩니다. 다른 디폴트 값을 지정하려면 직접 getDefaultValue
메서드를 메서드 섹션에 추가하십시오. 아래 예제에서 첫 번째 열거형 멤버 값은 LEDcolor.GREEN
이지만, getDefaultValue
메서드는 LEDcolor.RED
를 반환합니다.
classdef LEDcolor < int32 enumeration GREEN(1), RED(2) end methods (Static) function y = getDefaultValue() y = LEDcolor.RED; end end end
헤더 파일 지정하기
열거형이 외부 파일에 정의되도록 지정하려면 사용자 지정된 getHeaderFile
메서드를 제공하십시오. 아래 예제는 LEDcolor
가 외부 파일 my_LEDcolor.h
에 정의되도록 지정합니다.
classdef LEDcolor < int32 enumeration GREEN(1), RED(2) end methods(Static) function y=getHeaderFile() y='my_LEDcolor.h'; end end end
my_LEDcolor.h
를 제공해야 합니다. 예를 들면 다음과 같습니다.
enum LEDcolor { GREEN = 1, RED }; typedef enum LEDcolor LEDcolor;
MATLAB 열거형 LEDcolor
를 패키지 pkg
내에 배치하고 C++ 코드를 생성하면, 코드 생성 시 이 열거형의 이름이 그대로 유지되고 생성 코드의 네임스페이스 pkg
내에 배치됩니다. 따라서 제공하는 헤더 파일에서, 이 열거형을 네임스페이스 pkg
내에 정의해야 합니다.
생성된 열거형 값 이름에 클래스 이름 접두사 포함하기
기본적으로, 생성된 열거형 값 이름에는 클래스 이름 접두사가 포함되어 있지 않습니다. 예를 들면 다음과 같습니다.
enum LEDcolor { GREEN = 1, RED }; typedef enum LEDcolor LEDcolor;
클래스 이름 접두사를 포함하려면 true
를 반환하는 addClassNameToEnumNames
메서드를 제공하십시오. 예를 들면 다음과 같습니다.
classdef LEDcolor < int32 enumeration GREEN(1), RED(2) end methods(Static) function y = addClassNameToEnumNames() y=true; end end end
생성된 유형 정의에서 열거형 값 이름에 클래스 접두사 LEDcolor
가 포함되어 있습니다.
enum LEDcolor { LEDcolor_GREEN = 1, LEDcolor_RED }; typedef enum LEDcolor LEDcolor;
일반 C 열거형이 포함된 C++11 코드 생성하기
C++11 코드를 생성할 때 MATLAB 열거형 클래스는 C++11 열거형 클래스로 변환됩니다. 예를 들면 다음과 같습니다.
enum class MyEnumClass16 : short { Orange = 0, // Default value Yellow, Pink };
대신 일반 C 열거형을 생성하려면 false
를 반환하는 generateEnumClass
메서드를 제공하십시오. 예를 들면 다음과 같습니다.
classdef MyEnumClass16 < int16 enumeration Orange(0), Yellow(1), Pink(2) end % particular enum opting out methods(Static) function y = generateEnumClass() y = false; end end end
이제 생성된 C++11 코드에 일반 C 열거형이 포함되어 있습니다.
enum MyEnumClass16 : short { Orange = 0, // Default value Yellow, Pink };