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