当您构建一个使用生成的C/ c++代码的应用程序时,您必须提供一个C/ c++主函数来调用生成的代码。
默认情况下,对于C/ c++源代码、静态库、动态库和可执行文件的代码生成,MATLAB®编码员™生成一个示例C/ c++主函数。这个函数是一个模板,可以帮助您将生成的C/ c++代码合并到应用程序中。示例main函数声明和初始化数据,包括动态分配的数据。它调用入口点函数,但不使用入口点函数返回的值。要使用示例main函数,请将示例主源文件和头文件复制到构建文件夹之外的位置,然后修改新位置中的文件,以满足应用程序的需求。
MATLAB编码器为中的示例主函数生成源文件和头文件例子
构建文件夹的子文件夹。对于C代码生成,它生成文件main.c
和main.h
. 对于C++代码生成,它生成文件main.cpp
和main.h
.
main.c
或main.cpp
对于示例主源文件main.c
或main.cpp
,MATLAB编码器生成以下部分:
默认情况下,MATLAB编码器还可以在示例主源文件中生成注释,帮助您修改示例主函数以在应用程序中使用。
本节包括调用示例主源文件之外的代码所需的头文件。如果在修改示例主源文件时调用外部函数,请包括任何其他必需的头文件。
本节声明在示例主源文件中定义的实参初始化和入口点函数的函数原型。修改函数原型以匹配您在函数定义中所做的修改。为在示例主源文件中定义的函数声明新的函数原型。
本节为入口点函数用作参数的每种数据类型定义一个初始化函数。参数初始化函数将参数的大小初始化为默认值,将数据的值初始化为零。然后,该函数返回初始化的数据。更改这些大小和数据值以满足应用程序的要求。
对于一个有尺寸维度的论证< dimSizes >
和matlabc/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编码器将这些尺寸标注的大小指定为无限的
.
如果初始化函数的返回类型是埃姆沙雷
,MATLAB编码器将函数定义为返回指向埃姆沙雷
.
如果初始化函数名的长度超过配置设置中为函数名设置的最大字符数,MATLAB编码器在函数名的前面加上一个标识符。MATLAB编码器然后将函数名截断为标识符长度所允许的最大字符数。
笔记
默认情况下,生成的标识符允许的最大字符数为31。使用指定最大标识符长度的值集MATLAB编码器应用程序,选择最大标识符长度价值观代码外观代码生成设置的选项卡。要使用命令行界面指定最大标识符的值集,请更改最大长度
配置对象设置。
本节为每个MATLAB入口点函数定义一个函数。对于一个MATLAB函数富美
,示例主源文件定义了入口点函数美孚酒店
. 此函数创建变量,并调用C/C++源函数提供的数据初始化函数富科
或foo.cpp
需要。它调用这个C/ c++源函数,但不返回结果。修改美孚酒店
以便它根据应用程序的要求获取输入并返回输出。
本节定义了主要
执行以下操作的函数:
如果输出语言是C,它会声明并命名变量argc
和argv
但将它们抛为空。如果输出语言是c++,生成的示例main声明了变量,但没有命名argc
和argv
.
调用每个入口点函数一次。
调用terminate函数福乌酒店
,它是以第一个MATLAB入口点函数命名的福
声明用于代码生成。即使在函数中调用了多个入口点函数,也只调用一次terminate函数主要
.
返回零。
默认情况下,示例主要
函数不调用初始化函数foo_initialize
.代码生成器在生成的C/ c++入口点函数的开头包含对初始化函数的调用。生成的代码还包括检查,以确保初始化函数只自动调用一次,即使有多个入口点函数。
您可以选择在生成的入口点函数中不包含对initialize函数的调用。要进行此选择,请执行以下操作之一:
在一个编码器。CodeConfig
或coder.EmbeddedCodeConfig
对象,集合RunInitializeFcn
到错误的
.
在MATLAB编码器应用程序,所有设置选项卡,设置自动运行初始化功能到没有
.
如果你做了这个选择,举个例子主要
函数包括对初始化函数的调用foo_initialize
.
修改函数主要
,包括主要
和入口点函数,以满足应用程序的要求。
main.h
例如主头文件main.h
,MATLAB编码器生成以下内容:
默认情况下,MATLAB编码器也会在main.h
这可以帮助您修改要在应用程序中使用的示例主函数。
main.h
使用包含保护来防止文件的内容被多次包含。函数中包含包含文件和函数声明#ifndef
构造。
main.h
包括调用未在其中定义的代码所需的头文件。
main.h
声明在示例主源文件中定义的主函数的函数原型main.c
或main.cpp
.