Configuration parameters for MEX function generation from MATLAB code
A coder.MexCodeConfig
object contains the configuration
parameters that codegen
uses when generating a MEX function. Pass
the object to the codegen
function by using the
-config
option.
cfg = coder.config('mex')
creates a
coder.MexCodeConfig
object.
cfg = coder.config
creates a
coder.MexCodeConfig
object.
CompileTimeRecursionLimit
— Maximum number of function specializations for compile-time recursionMaximum number of function specializations for compile-time recursion,
specified as a positive integer. To disallow recursion in the MATLAB® code, set CompileTimeRecursionLimit
to 0.
The default compile-time recursion limit is large enough for most recursive
functions that require this type of recursion. If code generation fails
because of the compile-time recursion limit, and you want compile-time
recursion, try to increase the limit. Alternatively, change your MATLAB code so that the code generator uses run-time recursion. See
Compile-Time Recursion Limit Reached.
ConstantFoldingTimeout
— Maximum number of instructions to be executed by the constant folderMaximum number of instructions that the constant folder executes. In some
situations, code generation requires specific instructions to be constant.
If constant folding stops before these instructions are constant-folded,
code generation fails. In this case, increase the value of
ConstantFoldingTimeout
.
ConstantInputs
— Constant input checking mode'CheckValues'
(default) | 'IgnoreValues'
| 'Remove'
Constant input checking mode, specified as one of the values in this table.
Value | Description |
---|---|
'CheckValues' |
This value is the default value. When you call the MEX function, it checks that the value you provide for a constant input argument is the value specified at code generation time. You can call the MEX function and the original MATLAB function with the same arguments. Therefore, you can use the same test file for both functions. Checking the values can slow down execution of the MEX function. |
'IgnoreValues' |
When you call the MEX function, it ignores the value that you provide for a constant input argument. It uses the value specified at code generation time. You can use the same test file without the overhead of checking the constant argument values. |
'Remove' |
The code generator removes constant input arguments from the MEX function signature. When you call the MEX function, you do not provide a value for a constant input argument. This option provides backward compatibility. |
CppPackagesToNamespaces
— Generate C++ namespaces for MATLAB packagestrue
(default) | false
Whether to generate C++ namespaces for the packages in your MATLAB code, specified as one of the values in this table.
Value | Description |
---|---|
true | This value is the default value. The code generator produces C++ namespaces for the packages in your MATLAB code. See Organize Generated C++ Code into Namespaces. |
false | The code generator does not produce C++ namespaces for the packages in your MATLAB code. |
Dependency:
Setting TargetLang
to
'C++'
enables this parameter.
Data Types: logical
CppNamespace
— Namespace name for generated C++ code''
(default) | character vectorNamespace for the generated C++ code. The code generator does not produce code in a namespace unless you specify a nonempty character vector.
See Organize Generated C++ Code into Namespaces.
Dependency:
Setting TargetLang
to
'C++'
enables this parameter.
CppNamespaceForMathworksCode
— Place C++ code generated for MathWorks® code in a separate namespace'coder'
(default) | character vectorNamespace for the C++ code generated for MathWorks code. The code generator does not produce such a namespace if you specify this property as an empty character vector.
See Organize Generated C++ Code into Namespaces.
Dependency:
Setting TargetLang
to
'C++'
enables this parameter.
Data Types: char
CppPreserveClasses
— Generate C++ classes for MATLAB classestrue
(default) | falseWhether to generate C++ classes or C style structures for MATLAB classes, specified as one of the values in this table.
Value | Description |
---|---|
true | This value is the default value. The code generator produces C++ classes for MATLAB classes. See Generate C++ Classes for MATLAB Classes. |
false | The code generator produces C style structures for MATLAB classes. |
Dependency:
Setting TargetLang
to
'C++'
enables this parameter.
Data Types: logical
CustomHeaderCode
— Custom code that appears at top of generated C/C++ header filesCustom code that appears near the top of each C/C++ header file generated
from your MATLAB code, except rtwtypes.h
and
rtwhalf.h
, specified as a character vector.
CustomInclude
— Include folders to add to include path for compiling generated codeInclude folders to add to the include path when compiling the generated
code. Specify the list of include folders as a character vector. In the
character vector, separate include folders by a pathsep
character. For
example:
cfg = coder.config('mex'); cfg.CustomInclude = ['C:\Project' pathsep 'C:\Custom Files'];
CustomInitializer
— Custom code to include in the generated initialize functionCustom code to include in the generated initialize function, specified as a character vector.
CustomLibrary
— Static library files to link with the generated codeStatic library files to link with the generated code, specified as a
character vector. In the character vector, separate library file names by a
pathsep
character.
CustomSource
— Source files to compile and link with the generated codeSource files to compile and link with the generated code, specified as a
character vector. In the character vector, separate source file names by a
pathsep
character.
The build process searches for the source files first in the current
folder, and then in the include folders that you specify in
CustomInclude
. If source files with the same name
occur in multiple folders on the search path, the build process might use a
different file than the file that you specified.
Suppose that you specify foo.cpp
as a source file. If
foo.c
and foo.cpp
are both on the
search path, you cannot be sure whether the build process uses
foo.c
or foo.cpp
.
CustomSourceCode
— Code to appear near the top of the generated .c
or .cpp
filesSpecify code to appear near the top of each generated
.c
or .cpp
file (except
rtwhalf.c
or rtwhalf.cpp
), outside
of any function. Specify code as a character
vector.
Do not specify a C static function definition.
CustomTerminator
— Code that appears in the generated terminate function Code that appears in the generated terminate function, specified as a character vector.
DeepLearningConfig
— Configuration object for deep learning code generationcoder.MklDNNConfig
objectConfiguration object for code generation for deep learning networks,
specified as a coder.MklDNNConfig
object.
A coder.MklDNNConfig
object contains parameters specific to C++
code generation for deep learning using Intel® MKL-DNN. To create a coder.MklDNNConfig
object, use coder.DeepLearningConfig
. For example:
cfg = coder.config('mex'); cfg.TargetLang = 'C++'; cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn');
Code generation for deep learning networks requires Deep Learning Toolbox™ and the MATLAB Coder™ Interface for Deep Learning Libraries support package.
See Code Generation for Deep Learning Networks with MKL-DNN.
Note
MEX code generation is not supported for deep learning using the ARM® Compute Library.
Dependency: If DeepLearningConfig
is set,
codegen
sets TargetLang
to
C++
.
DynamicMemoryAllocation
— Dynamic memory allocation mode'Threshold'
(default) | 'AllVariableSizeArrays'
| 'Off'
Dynamic memory allocation mode, specified as one of the values in this table.
Value | Description |
---|---|
'Threshold' |
This value is the default value. The code generator allocates memory dynamically on
the heap for variable-size arrays whose size (in
bytes) is greater than or equal to
|
'AllVariableSizeArrays' | The code generator dynamically allocates memory for all variable-size arrays on the heap. |
'Off' |
The code generator statically allocates memory for variable-size arrays on the stack. |
Unbounded variable-size arrays require dynamic memory allocation.
Dependencies:
EnableVariableSizing
enables this
parameter.
Setting this DynamicMemoryAllocation
to
'Threshold'
enables the
DynamicMemoryAllocationThreshold
parameter.
DynamicMemoryAllocationInterface
— Dynamically allocated array at generated function interface'Auto'
(default) | 'C'
| 'C++'
Implementation of dynamically allocated array at the interface of the generated C/C++ function, specified as one of the values in this table.
Value | Description |
---|---|
'Auto' | This is the default value. If you set the
|
'C' | The generated code uses the C style
|
'C++' | If you set the The generated code uses the
|
Dependency:
EnableVariableSizing
enables this
parameter.
DynamicMemoryAllocationThreshold
— Size threshold for dynamic memory allocation of variable-size arrays65536
(default) | positive integerSize threshold for dynamic memory allocation of variable-size arrays, specified as a positive integer. The code generator uses dynamic memory allocation for variable-size arrays whose size (in bytes) is greater than or equal to the threshold.
Dependency:
Setting DynamicMemoryAllocation
to
'Threshold'
enables this
parameter.
EchoExpressions
— Expression echoingtrue
(default) | false
Expression echoing, specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. The MEX function displays the output of statements that do not end with a semicolon. |
false |
The MEX function does not display the output of statements that do not end with a semicolon. |
This property does not apply to common visualization functions, such as
disp
, plot
, or
figure
when they are called as an extrinsic
function. MEX functions display the output of those functions regardless of
the presence of a semicolon or the value of
EchoExpressions
.
EnableAutoExtrinsicCalls
— Automatic extrinsic function callstrue
(default) | false
Automatic extrinsic function calls, specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. The code generator treats some common
visualization functions as extrinsic functions. You
do not have to declare these functions as extrinsic
by using |
false | The code generator does not treat common
visualization functions as extrinsic functions unless
you declare them as extrinsic by using coder.extrinsic . |
Some common visualization functions are plot
,
disp
, and figure
. See Extrinsic Functions.
EnableDebugging
— C compiler debugging modefalse
(default) | true
C compiler debugging mode, specified as one of the values in this table.
Value | Description |
---|---|
false |
This value is the default value. The code generator does not enable the C compiler debugging mode. |
true |
The code generator enables the C compiler debugging mode. When debugging mode is enabled, the C compiler does not optimize the code. The compilation is faster, but the execution is slower. |
EnableJIT
— Just-in-time (JIT) compilation modefalse
(default) | true
Just-in-time (JIT) compilation mode, specified as one of the values in this table.
Value | Description |
---|---|
false |
This value is the default value. The code generator creates a C/C++ MEX function by generating and compiling C/C++ code. |
true |
The code generator uses just-in-time (JIT) compilation technology for MEX function generation. The code generator creates a JIT MEX function that contains an abstract representation of the MATLAB code. When you run the JIT MEX function, MATLAB generates the executable code in memory. |
To speed up generation of MEX functions, set EnableJIT
to true
.
JIT compilation is incompatible with certain code generation features and
options, such as custom code or use of the OpenMP library. If you specify
JIT compilation and the code generator is unable to use it, it generates a
C/C++ MEX function with a warning. If EnableJIT
and
EnableOpenMP
are true
, and your
code uses parfor
, the code generator uses JIT
compilation and treats the parfor
-loops as
for
-loops.
EnableMemcpy
— memcpy
optimizationtrue
(default) | false
memcpy
optimization, specified as one of the values in
this table.
Value | Description |
---|---|
true |
This value is the default value. If possible, the code generator uses the
|
false |
The code generator does not use the
|
EnableMexProfiling
— Instrumentation for profilingfalse
(default) | true
Enabling profiling of generated MEX function, specified as one of the values in this table.
Value | Description |
---|---|
false | This value is the default value. The code generator does not include the instrumentation for profiling in the generated MEX function. |
true | The code generator includes the instrumentation for profiling in the generated MEX function. You can then use the MATLAB Profiler to profile the MEX. See Profile MEX Functions by Using MATLAB Profiler. |
EnableOpenMP
— Parallelization of parfor
-loopstrue
(default) | false
Parallelization of parfor
-loops, specified as one of
the values in this table.
Value | Description |
---|---|
true |
This value is the default value. If possible, the code generator uses the OpenMP library to produce loop iterations that run in parallel. |
false |
The code generator treats
|
See parfor
.
Use of the OpenMP library is not compatible with just-in-time (JIT)
compilation. If EnableJIT
and
EnableOpenMP
are true
, the code
generator uses JIT compilation and treats parfor
-loops as
for
-loops.
EnableRuntimeRecursion
— Run-time recursion supporttrue
(default) | false
Run-time recursion support, specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. Recursive functions are allowed in the generated code. |
false |
Recursive functions are not allowed in the generated code. |
Some coding standards, such as MISRA®, do not allow recursion. To increase the likelihood of
generating code that is compliant with MISRA C®, set EnableRuntimeRecursion
to
false
.
If your MATLAB code requires run-time recursion and
EnableRuntimeRecursion
is false
,
code generation fails.
EnableVariableSizing
— Variable-size array supporttrue
(default) | false
Variable-size array support, specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. Variable-size arrays are allowed for code generation. |
false |
Variable-size arrays are not allowed for code generation. |
Dependency:
Enables Dynamic memory allocation
.
ExtrinsicCalls
— Extrinsic function call supporttrue
(default) | false
Extrinsic function call support, specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. For an extrinsic function, the code generator produces a call to a MATLAB function. The code generator does not generate the internal code for the function. |
false |
The code generator ignores an extrinsic function. It does not generate code for the call to the MATLAB function. If the extrinsic function affects the output of the MATLAB function, the code generator issues a compilation error. If you set |
The
value of ExtrinsicCalls
affects how a MEX function generates
random numbers for rand,
randi
, and
randn
. If ExtrinsicCalls
is
true
, the MEX function uses the MATLAB global random number stream to generate random numbers.
Otherwise, the MEX function uses a self-contained random number
generator.
See Extrinsic Functions.
FilePartitionMethod
— File partitioning mode'MapMFileToCFile'
(default) | 'SingleFile'
File partitioning mode specified as one of the values in this table.
Value | Description |
---|---|
'MapMFileToCFile' |
This value is the default value. The code generator produces separate C/C++ files for each MATLAB language file. |
'SingleFile' | The code generator produces a single file for C/C++ functions that map to your MATLAB entry-point functions. The code generator produces separate C/C++ files for utility functions. |
GenCodeOnly
— Generation of only source codefalse
(default) | true
Generation of only source code, specified as one of the values in this table.
Value | Description |
---|---|
false |
This value is the default value. The code generator produces C/C++ source code and builds object code. |
true |
The code generator produces C/C++ source code, but does not invoke the make command or build object code. When you iterate between modifying MATLAB code and generating C/C++ code, generating only code can save time. |
GenerateComments
— Comments in generated code true
(default) | false
Comments in generated code, specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. The code generator places comments in the generated code. |
false | The code generator does not place comments in the generated code. |
GenerateReport
— Code generation reportfalse
(default) | trueCode generation report, specified as one of the values in this table.
Value | Description |
---|---|
false |
This value is the default value. The code generator produces a report only if error
or warning messages occur, or if you set
|
true | The code generator produces a code generation report. |
GlobalDataSyncMethod
— Global data synchronization mode'SyncAlways'
(default) | 'SyncAtEntryAndExits'
| 'NoSync'
Global data synchronization mode, specified as one of the values in this table.
Value | Description for Global Data | Description for Constant Global Data |
---|---|---|
|
This value is the default value. Synchronizes global data at MEX function entry and
exit and for extrinsic calls for maximum consistency
between MATLAB and the generated MEX function. To
maximize
performance, if the
extrinsic calls do not change global data, use this
option with the |
Verifies consistency of constant global data at
MEX function entry and after extrinsic calls. If the
global data values in the MATLAB global workspace are inconsistent with
the compile-time constant global values in the MEX
function, the MEX function ends with an error. Use
the |
|
Synchronizes global data at MEX function entry and
exit only. To maximize
performance, if
only a few extrinsic calls change global data, use
this option with the
|
Verifies constant global data at MEX function
entry only. If the global data values in the
MATLAB global workspace are inconsistent with
the compile-time constant global values in the MEX
function, the MEX function ends with an error. Use
the |
|
Disables synchronization. Before disabling synchronization, verify that your MEX function does not interact with MATLAB global data. Otherwise, inconsistencies between MATLAB and the MEX function can occur. |
Disables consistency checks. |
HighlightPotentialRowMajorIssues
— Potential row-major layout issuestrue
(default) | false
Display of potential row-major layout efficiency issues, specified as one of the values in this table.
Value | Description |
---|---|
true |
The code generation report displays potential efficiency issues due to row-major layout. (This value is the default value.) |
false | The code generation report does not display issues related to array layout. |
InitFltsAndDblsToZero
— Assignment of float and double zero with memset true
(default) | false
Assignment of float and double zero with memset
,
specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. If possible, the code generator uses the
|
false |
The code generator does not use the
|
InlineBetweenMathWorksFunctions
— Control inlining between MathWorks functions'Speed'
(default) | 'Always'
| 'Readability'
| 'Never'
Inlining behavior at all call sites where a MathWorks calls another MathWorks function, specified as one of the values in this table.
Value | Description |
---|---|
'Speed' | This value is the default value. Uses internal heuristics to determine whether to perform inlining at a call site. This setting usually leads to highly optimized code. |
'Always' | Always performs inlining at a call site. |
'Readability' | Almost never inlines function calls, except for calls to very small functions. Preserves modularity of code without sacrificing too much speed, whenever possible. Results in highly readable code. |
'Never' | Never inlines function calls. Results in maximum readability. This setting might significantly reduce the performance of the generated code. |
Even if you select the 'Always'
or the
'Never'
option for a setting, in certain cases, the
code generator might not strictly follow that instruction. For example, if
there is a conflict, the coder.inline('always')
or
coder.inline('never')
directive placed inside a
function body overrides this option. For more information, see Interaction Between Different Inlining Controls.
See Control Inlining to Fine-Tune Performance and Readability of Generated Code.
InlineBetweenUserAndMathWorksFunctions
— Control inlining between user-written functions and MathWorks functions'Speed'
(default) | 'Always'
| 'Readability'
| 'Never'
Inlining behavior at all call sites where a function that you wrote calls a MathWorks function, or a MathWorks function calls a function that you wrote. Specified as one of the values in this table.
Value | Description |
---|---|
'Speed' | This value is the default value. Uses internal heuristics to determine whether to perform inlining at a call site. This setting usually leads to highly optimized code. |
'Always' | Always performs inlining at a call site. |
'Readability' | Almost never inlines function calls, except for calls to very small functions. Preserves modularity of code without sacrificing too much speed, whenever possible. Results in highly readable code. |
'Never' | Never inlines function calls. Results in maximum readability. This setting might significantly reduce the performance of the generated code. |
Even if you select the 'Always'
or the
'Never'
option for a setting, in certain cases, the
code generator might not strictly follow that instruction. For example, if
there is a conflict, the coder.inline('always')
or
coder.inline('never')
directive placed inside a
function body overrides this option. For more information, see Interaction Between Different Inlining Controls.
See Control Inlining to Fine-Tune Performance and Readability of Generated Code.
InlineBetweenUserFunctions
— Control inlining between user-written functions'Speed'
(default) | 'Always'
| 'Readability'
| 'Never'
Inlining behavior at all call sites where a function that you wrote calls another function that you wrote, specified as one of the values in this table.
Value | Description |
---|---|
'Speed' | This value is the default value. Uses internal heuristics to determine whether to perform inlining at a call site. This setting usually leads to highly optimized code. |
'Always' | Always performs inlining at a call site. |
'Readability' | Almost never inlines function calls, except for calls to very small functions. Preserves modularity of code without sacrificing too much speed, whenever possible. Results in highly readable code. |
'Never' | Never inlines function calls. Results in maximum readability. This setting might significantly reduce the performance of the generated code. |
Even if you select the 'Always'
or the
'Never'
option for a setting, in certain cases, the
code generator might not strictly follow that instruction. For example, if
there is a conflict, the coder.inline('always')
or
coder.inline('never')
directive placed inside a
function body overrides this option. For more information, see Interaction Between Different Inlining Controls.
See Control Inlining to Fine-Tune Performance and Readability of Generated Code.
IntegrityChecks
— Memory integrity checkingtrue
(default) | falseMemory integrity checking, specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. The generated code detects memory integrity violations and stops execution with a diagnostic message. |
false |
The generated code does not detect memory integrity violations. Setting |
LaunchReport
— Automatic open of code generation reportfalse
(default) | trueAutomatic open of code generation report, specified as one of the values in this table.
Value | Description |
---|---|
false |
This value is the default value. If errors or warnings occur, or if
|
true | The code generator produces and opens a code generation report. |
MATLABSourceComments
— Inclusion of MATLAB source code as comments in generated code false
(default) | true
Inclusion of MATLAB source code as comments in generated code, specified as one of the values in this table.
Value | Description |
---|---|
false |
This value is the default value. The code generator does not insert MATLAB source code as comments in the generated code. The code generator does not include the MATLAB function signature in the function banner. |
true | The code generator inserts MATLAB source code as comments in the generated code. A traceability tag immediately precedes each line of source code. The traceability tag helps you to locate the corresponding MATLAB source code. See Tracing Generated C/C++ Code to MATLAB Source Code. The code generator also includes the MATLAB function signature in the function banner. |
Dependency:
GenerateComments
enables this
parameter.
MemcpyThreshold
— Minimum size for memcpy
or memset
optimization Minimum size, in bytes, for memcpy or memset optimization, specified as a positive integer.
To optimize generated code that copies consecutive array elements, the
code generator tries to replace the code with a memcpy
call. To optimize generated code that assigns a literal constant to
consecutive array elements, the code generator tries to replace the code
with a memset
call.
The number of bytes is the number of array elements to copy or assign multiplied by the number of bytes required for the C/C++ data type.
If the number of elements to copy or assign is variable (not known at
compile time), the code generator ignores the
MemcpyThreshold
property.
See memcpy Optimization and memset Optimization.
Name
— Object name'MexCodeConfig'
(default) | character vectorObject name, specified as a character vector.
PostCodeGenCommand
— Command to customize build processing''
(default) | character vectorCommand to customize build processing after MEX function generation with
codegen
, specified as a character vector.
PreserveArrayDimensions
— N-dimensional indexingfalse
(default) | true
Generation of code that uses N-dimensional indexing, specified as one of the values in this table.
Value | Description |
---|---|
false |
Generate code that uses one-dimensional indexing. (This value is the default value.) |
true | Generate code that uses N-dimensional indexing. |
PreserveVariableNames
— Variable names to preserve in the generated code'None'
(default) | 'UserNames'
| 'All'
Variable names to preserve in the generated code, specified as one of the values in this table.
Value | Description |
---|---|
'None' |
This value is the default value. The code generator does not have to preserve any variable names. It can reuse any variables that meet the requirements for variable reuse. If your code uses large structures or arrays,
setting |
'UserNames' |
The code generator preserves names that correspond
to variables that you define in the MATLAB code. It does not replace your
variable name with another name and does not use
your name for another variable. To improve
readability, set
Setting |
'All' |
Preserve all variable names. This parameter value disables variable reuse. Use it only for testing or debugging, not for production code. |
ReportInfoVarName
— Name of variable containing code generation report information''
(default) | character vectorName of variable to which you export information about code generation, specified as a character vector. The code generator creates this variable in the base MATLAB workspace. This variable contains information about code generation settings, input files, generated files, and code generation messages.
See Access Code Generation Report Information Programmatically and coder.ReportInfo Properties.
ReportPotentialDifferences
— Potential differences reportingtrue
(default) | false
Potential difference reporting, specified as one of the values in this table:
Value | Description |
---|---|
true | The code generator reports potential behavior differences between generated code and MATLAB code. The potential differences are listed on a tab of the code generation report. A potential difference is a difference that occurs at run time only under certain conditions. |
false | The code generator does not report potential differences. |
ReservedNameArray
— Names that the code generator cannot use for functions or variables''
(default) | character vector | string scalarList of names that code generator must not use for functions or variables,
specified as a character vector or string scalar. To specify multiple
reserved names, use a semicolon-separated list of reserved names in
ReservedNameArray
. For example,
cfg.ReservedNameArray =
"reserve1;reserve2;reserve3"
.
ResponsivenessChecks
— Responsiveness checkstrue
(default) | false
Responsiveness checks, specified as one of the values in this table.
Value | Description |
---|---|
true |
This value is the default value. You can use Ctrl+C to stop execution of a generated MEX function. |
false |
To end a long-running MEX function, you might have to terminate MATLAB. |
RowMajor
— Row-major array layoutfalse
(default) | true
Generation of code that uses row-major array layout, specified as one of the values in this table.
Value | Description |
---|---|
false |
Generate code that uses column-major array layout. (This value is the default value.) |
true | Generate code that uses row-major array layout. |
SaturateOnIntegerOverflow
— Integer overflow supporttrue
(default) | false
Integer overflow support, specified as one of the values in this table.
Value | Description |
---|---|
true | This value is the default value. The code generator produces code to handle integer overflow. Overflows saturate to either the minimum or maximum value that the data type can represent. |
false | The code generator does not produce code to
handle integer overflow. Do not set
|
This parameter applies only to MATLAB built-in integer types. It does not apply to doubles, singles, or fixed-point data types.
StackUsageMax
— Maximum stack usage per application200000
(default) | positive integerMaximum stack usage per application, in bytes, specified as a positive integer. Set a limit that is lower than the available stack size. Otherwise, a run-time stack overflow might occur. The C compiler detects and reports stack overflows.
TargetLang
— Language to use in generated code'C'
(default) | 'C++'
Language to use in generated code, specified as 'C'
or
'C++'
. If you specify C++, the code generator wraps
the C code into .cpp files so that you can use a C++ compiler and interface
with external C++ applications. It does not generate C++ classes.
Dependency: If DeepLearningConfig
is set,
codegen
sets TargetLang
to
C++
.
Write a MATLAB function from which you can generate code. This example uses
the function myadd
that returns the sum of its
inputs.
function c = myadd(a,b) c = a + b; end
Create a configuration object for MEX function generation.
cfg = coder.config('mex');
Change the values of the properties for which you do not want to use the default values. For example, enable just-in-time (JIT) compilation.
cfg.EnableJIT = true;
Generate code by using codegen
. Pass the
configuration object to codegen
by using the
-config
option. Specify that the input arguments are
scalar
double.
codegen myadd -config cfg -args {1 1} -report
To use default configuration parameter values for MEX function generation, instead of
creating a configuration object, you can call codegen
without
specifying a configuration object or with the -config:mex
option.