当您构建一个使用生成的C/ c++代码的应用程序时,必须提供一个调用生成的代码的C/ c++ main函数。
默认情况下,对于C/ c++源代码、静态库、动态库和可执行文件的代码生成,MATLAB®编码器™生成一个示例C/ c++ main函数。这个函数是一个模板,可以帮助您将生成的C/ c++代码合并到应用程序中。示例main函数声明并初始化数据,包括动态分配的数据。它调用入口点函数,但不使用入口点函数返回的值。要使用示例main函数,请将示例main源文件和头文件复制到构建文件夹之外的位置,然后修改新位置中的文件以满足应用程序的需求。
MATLAB编码器中生成示例主函数的源文件和头文件例子
生成文件夹的子文件夹。对于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入口点函数命名喷火
声明用于代码生成。即使在函数中调用了多个入口点函数,也只能调用终止函数一次主要
.
返回零。
默认情况下,示例主要
函数不调用initialize函数foo_initialize
.代码生成器在生成的C/ c++入口点函数的开头包含对initialize函数的调用。生成的代码还包括检查,以确保initialize函数只被自动调用一次,即使存在多个入口点函数。
您可以选择在生成的入口点函数中不包含对initialize函数的调用。要做出这样的选择,请执行以下操作之一:
在一个编码器。CodeConfig
或编码器。EmbeddedCodeConfig
对象,设置RunInitializeFcn
来假
.
在MATLAB编码器应用,在所有设置选项卡,设置自动运行initialize函数来没有
.
如果你做出这样的选择,这个例子主要
函数包含对initialize函数的调用foo_initialize
.
修改功能主要
,包括的输入和输出主要
和入口点函数,以满足您的应用程序的需求。
main.h
以main头文件为例main.h
,MATLAB编码器生成以下内容:
默认情况下,MATLAB编码器还在main.h
这可以帮助您修改示例main函数,以便在应用程序中使用。
main.h
使用包含保护来防止文件的内容被多次包含。对象中的包含文件和函数声明#如果未定义
构造。
main.h
包括调用其中未定义的代码所需的头文件。
main.h
声明在示例主源文件中定义的主函数的函数原型c
或main.cpp
.