Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

생성 코드에서 열거형 사용자 지정하기

코드 생성에서 열거형을 사용자 지정하려면, 클래스 정의의 정적 메서드 섹션에 다음 표에 나와 있는 사용자 지정된 메서드를 포함시키십시오.

메서드설명반환되거나 지정되는 디폴트 값 사용 시점

getDefaultValue

디폴트 열거형 값을 반환합니다.

열거형 클래스 정의에 있는 첫 번째 값

디폴트 값이 첫 번째 열거형 값과 다른 경우 원하는 디폴트 값을 반환하는 getDefaultValue 메서드를 제공하십시오. 디폴트 열거형 값 지정하기 항목을 참조하십시오.

getHeaderFile

외부에서 정의된 열거형을 정의하는 파일을 지정합니다.

''

외부에서 정의된 열거형을 사용하려면, 해당 유형을 정의하는 헤더 파일 경로를 반환하는 getHeaderFile 메서드를 제공하십시오. 이 경우, 코드 생성기는 클래스 정의를 생성하지 않습니다. 헤더 파일 지정하기 항목을 참조하십시오.

addClassNameToEnumNames

생성 코드에서 클래스 이름이 접두사가 되는지 여부를 지정합니다.

false — 접두사가 사용되지 않습니다.

생성 코드에서 클래스 이름이 접두사가 되도록 하려면 addClassNameToEnumNames 메서드의 반환 값을 true로 설정하십시오. 생성된 열거형 값 이름에 클래스 이름 접두사 포함하기 항목을 참조하십시오.

참고

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
};

관련 항목