Main Content

coder.ignoreConst

표현식의 상수 값을 사용한 함수 특수화 금지

설명

예제

coder.ignoreConst(expression)은 코드 생성기가 expression의 상수 값을 사용해서 함수 특수화를 생성하는 것을 막습니다. coder.ignoreConst(expression)expression의 값을 반환합니다.

예제

모두 축소

상수 값을 사용하여 호출되는 함수에서 함수 특수화가 생성되는 것을 막으려면 coder.ignoreConst를 사용하십시오.

myfcn을 호출하는 함수 call_myfn을 작성합니다.

function [x, y] = call_myfcn(n)
%#codegen
x = myfcn(n, 'mode1');
y = myfcn(n, 'mode2');
end

function y = myfcn(n,mode)
coder.inline('never');
if strcmp(mode,'mode1')
    y = n;
else
    y = -n;
end
end

독립 실행형 C 코드를 생성합니다. 예를 들어 정적 라이브러리를 생성해 보겠습니다. 코드 생성 리포트를 생성하도록 지정합니다.

codegen -config:lib call_myfcn -args {1} -report

코드 생성 리포트에서 call_myfcn에 대한 2개의 함수 특수화를 확인할 수 있습니다.

This image shows the function call_myfcn and the function specializations in the code generation report.

코드 생성기는 값이 'mode1'mode에 대해 call_myfcn>myfcn>1을 생성합니다. 값이 'mode2'mode에 대해서는 call_myfcn>myfcn>2를 생성합니다.

생성된 C 코드에서 특수화 my_fcnb_my_fcn을 확인할 수 있습니다.

static double b_myfcn(double n)
{
  return -n;
}

static double myfcn(double n)
{
  return n;
}

함수 특수화를 막기 위해, 코드 생성기에게 mode 인수의 값이 상수인 것을 무시하도록 지시합니다.

function [x, y] = call_myfcn(n)
%#codegen
x = myfcn(n, coder.ignoreConst('mode1'));
y = myfcn(n, coder.ignoreConst('mode2'));
end

function y = myfcn(n,mode)
coder.inline('never');
if strcmp(mode,'mode1')
    y = n;
else
    y = -n;
end
end

C 코드를 생성합니다.

codegen -config:lib call_myfcn -args {1} -report

이제 코드 생성 리포트에 함수 특수화가 보이지 않습니다.

This image shows the function call_myfcn after instructing the code generator to ignore that the values of the mode argument are constant in the code generation report.

생성된 C 코드에는 my_fcn에 대한 함수 하나만 있습니다.

입력 인수

모두 축소

값을 상수가 아닌 것으로 처리할 표현식으로, MATLAB 표현식으로 지정됩니다.

세부 정보

모두 축소

함수 특수화

함수의 특정 호출을 위해 입력 유형, 크기, 실수/복소수 여부 또는 값이 사용자 지정된 함수.

함수 특수화는 코드 중복을 감수하면서 그 대신 효율적인 C 코드를 생성합니다. 코드 생성기에서 생성한 MATLAB 함수 특수화는 모두 코드 생성 리포트에 표시됩니다. 하지만 이후의 변환이나 최적화를 통해 생성된 C/C++ 코드에는 특수화가 표시되지 않을 수 있습니다.

  • 일부 재귀 함수 호출에서는 coder.ignoreConst를 사용하여 런타임 재귀를 강제로 실행할 수 있습니다. Force Code Generator to Use Run-Time Recursion 항목을 참조하십시오.

  • coder.ignoreConst(expression)은 코드 생성기가 expression의 상수 값을 사용해서 함수 특수화를 생성하는 것을 막습니다. 그러나 코드 생성 중에 상수 값을 다른 용도로 사용하는 것을 막지는 않습니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

버전 내역

R2017a에 개발됨