当您构建一个使用生成的C/ c++代码的应用程序时,您必须提供一个C/ c++主函数来调用生成的代码。
默认情况下,对于C/ c++源代码、静态库、动态库和可执行文件的代码生成,MATLAB®编码器™生成一个示例C/ c++主函数。这个函数是一个模板,可以帮助您将生成的C/ c++代码合并到应用程序中。示例main函数声明和初始化数据,包括动态分配的数据。它调用入口点函数,但不使用入口点函数返回的值。要使用示例main函数,请将示例主源文件和头文件复制到构建文件夹之外的位置,然后修改新位置中的文件,以满足应用程序的需求。
MATLAB编码器的示例main函数生成源文件和头文件例子
构建文件夹的子文件夹。对于C代码生成,它生成文件c
和main.h
.对于c++代码生成,它生成文件main.cpp
和main.h
.
c
或main.cpp
为示例主源文件c
或main.cpp
,MATLAB编码器生成以下部分:
默认情况下,MATLAB编码器还在示例主源文件中生成注释,可以帮助您修改示例主函数以在应用程序中使用。
本节包括调用不在示例主源文件中的代码所需的头文件。如果在修改示例主源文件时调用外部函数,请包含任何其他必需的头文件。
本节声明在示例主源文件中定义的实参初始化和入口点函数的函数原型。修改函数原型以匹配您在函数定义中所做的修改。为在示例主源文件中定义的函数声明新的函数原型。
本节为每个入口点函数用作实参的数据类型定义一个初始化函数。实参初始化函数将实参的大小初始化为默认值,并将数据的值初始化为零。然后该函数返回初始化的数据。更改这些大小和数据值以满足应用程序的需求。
对于一个有尺寸维度的论证< dimSizes >
和MATLAB C/ c++数据类型< baseType >
,示例主源文件定义了一个具有该名称的初始化函数argInit_ < dimSizes > _ < baseType >
.例如,对于具有MATLAB double类型数据的5乘5数组,示例主源文件定义了参数初始化函数argInit_5x5_real_T
.
MATLAB编码器修改参数初始化函数的名称如下:
如果任何一个尺寸是可变的,MATLAB编码器表示这些尺寸的大小为d <最大尺寸>
,在那里<最大尺寸>
是该维度的最大尺寸。例如,对于具有MATLAB double类型数据的数组,其第一个维度的静态大小为2,第二个维度的大小可变化为10,示例主源文件定义了参数初始化函数argInit_2xd10_real_T
.
如果任何一个维度是无界的,MATLAB编码器表示这些尺寸的大小为无限
.
如果初始化函数的返回类型是emxArray
,MATLAB编码器将函数定义为返回指向emxArray
.
如果初始化函数名的长度超过配置设置中为函数名设置的最大字符数,MATLAB编码器在函数名的前面加上一个标识符。MATLAB编码器然后将函数名截断为标识符长度所允许的最大字符数。
请注意
默认情况下,允许生成标识符的最大字符数是31。属性指定最大标识符长度的值集MATLAB编码器应用程序,选择最大标识符长度价值代码的外观选项卡的代码生成设置。要使用命令行界面指定最大标识符的值集,请更改MaxIdLength
配置对象设置。
本节为每个MATLAB入口点函数定义一个函数。对于一个MATLAB函数foo.m
,示例主源文件定义了一个入口点函数main_foo
.这个函数创建变量并调用C/ c++源函数的数据初始化函数foo.c
或foo.cpp
需要。它调用这个C/ c++源函数,但不返回结果。修改main_foo
以便它根据应用程序的要求获取输入并返回输出。
本节定义主要
函数执行以下操作:
如果输出语言是C,它会声明并命名变量命令行参数个数
和argv
但将它们抛为空。如果输出语言是c++,生成的示例main声明了变量,但没有命名命令行参数个数
和argv
.
调用每个入口点函数一次。
调用terminate函数foo_terminate
,以MATLAB的第一个入口点函数命名喷火
声明用于代码生成。即使在函数中调用了多个入口点函数,也只调用一次terminate函数主要
.
返回零。
缺省情况下,为示例主要
函数没有调用初始化函数foo_initialize
.代码生成器在生成的C/ c++入口点函数的开头包含对初始化函数的调用。生成的代码还包括检查,以确保初始化函数只自动调用一次,即使有多个入口点函数。
您可以选择在生成的入口点函数中不包含对初始化函数的调用。要做出这个选择,请选择以下方法之一:
在一个编码器。CodeConfig
或编码器。EmbeddedCodeConfig
对象,设置RunInitializeFcn
来假
.
在MATLAB编码器应用程序,所有设置选项卡,设置自动运行初始化函数来没有
.
如果你做了这个选择,举个例子主要
函数包括对初始化函数的调用foo_initialize
.
修改函数主要
,包括的输入和输出主要
及各入口点功能,满足您的应用需求。
main.h
例如主头文件main.h
,MATLAB编码器生成以下:
默认情况下,MATLAB编码器也会在main.h
这可以帮助您修改示例main函数,以便在应用程序中使用。
main.h
使用包含保护来防止文件的内容被多次包含。函数中包含包含文件和函数声明#如果未定义
构造。
main.h
包括调用未在其中定义的代码所需的头文件。
main.h
声明示例主源文件中定义的主函数的函数原型c
或main.cpp
.