使用生成的初始化和终止功能GydF4y2Ba
从MATLAB生成C/C ++代码时GydF4y2Ba®GydF4y2Ba代码,代码生成器会自动产生两个管家功能,并初始化和终止。初始化函数初始化生成的C/C ++入口点功能运行的状态。首次调用入口点功能之前,必须调用它。终止功能释放了分配的内存并执行其他清理操作。在您最后一次调用入口点功能后,必须调用它。GydF4y2Ba
初始化函数GydF4y2Ba
生成的初始化函数的名称是GydF4y2Baprimary_function_nameGydF4y2Ba_初始化GydF4y2Ba
, 在哪里GydF4y2Baprimary_function_nameGydF4y2Ba是您在生成代码时指定的第一个MATLAB入口点功能的名称。初始化函数初始化生成的入口点功能运行的状态。初始化函数可以包括:GydF4y2Ba
调用支持代码的非限金宝app时数据(GydF4y2Ba
infGydF4y2Ba
和GydF4y2Ba南GydF4y2Ba
)。如果您的MATLAB代码包含可以生成非精彩值的操作,则会生成这些调用。GydF4y2Ba初始化的代码GydF4y2Ba
全球的GydF4y2Ba
或者GydF4y2Ba执着的GydF4y2Ba
变量。GydF4y2Ba定制代码用于创建您指定的初始状态。要在初始化函数中包含自定义代码,请执行以下操作之一:GydF4y2Ba
在代码配置对象中,设置GydF4y2Ba
定制器GydF4y2Ba
到包含自定义代码的字符向量。GydF4y2Ba在里面GydF4y2BaMATLAB CODER™GydF4y2Ba应用程序,在GydF4y2Ba自定义代码GydF4y2Ba选项卡,为初始化函数指定自定义代码。GydF4y2Ba
在某些情况下,无需初始化代码,生成的初始化函数为空。GydF4y2Ba
调用初始化函数GydF4y2Ba
如果生成MEX函数,则生成的代码会自动包含对初始化函数的调用。如果您生成独立代码,则有两种可能的情况:GydF4y2Ba
默认情况下,如果初始化函数是非发行的,则代码生成器在生成的C/C ++入口点函数的开头中包含对初始化函数的调用。生成的代码还包括检查,以确保初始化函数仅自动调用一次,即使有多个入口点函数。在这种情况下,您无需手动调用初始化函数。GydF4y2Ba
如果初始化函数为空,则生成的C/C ++入口点功能不包括对初始化函数的调用。GydF4y2Ba
您可以选择不在生成的入口点函数中包含对初始化函数的调用。做以下一个:GydF4y2Ba
在一个GydF4y2Ba
Coder.CodeConfigGydF4y2Ba
或者GydF4y2BaCoder.embeddedCodeConfigGydF4y2Ba
对象,设置GydF4y2BaRunInitializeFCNGydF4y2Ba
到GydF4y2Ba错误的GydF4y2Ba
。GydF4y2Ba在里面GydF4y2BaMATLAB编码器GydF4y2Ba应用程序,在GydF4y2Ba所有设置GydF4y2Ba选项卡,设置GydF4y2Ba自动运行初始化函数GydF4y2Ba到GydF4y2Ba
不GydF4y2Ba
。GydF4y2Ba
如果做出此选择,则必须在首次调用生成的入口点功能之前手动调用初始化功能。不调用初始化函数会导致生成的入口点函数在无效状态下操作。GydF4y2Ba
如果您使用类接口生成C ++代码,则代码生成器会生成类构造函数和驱动器,该类构造函数和驱动器执行初始化和终止操作。您无需手动致电GydF4y2Ba初始化GydF4y2Ba
和GydF4y2Ba终止GydF4y2Ba
职能。看GydF4y2Ba使用类接口生成C ++代码GydF4y2Ba。GydF4y2Ba
生成初始化函数的示例GydF4y2Ba
MATLAB代码模式和相应生成的初始化函数的示例:GydF4y2Ba
您的MATLAB代码使用GydF4y2Ba
全球的GydF4y2Ba
或者GydF4y2Ba执着的GydF4y2Ba
变量。例如,定义此MATLAB函数:GydF4y2Ba功能GydF4y2Bay = barGydF4y2Ba全球的GydF4y2Bag y = g;GydF4y2Ba结尾GydF4y2Ba
生成一个静态库GydF4y2Ba
酒吧GydF4y2Ba
。指定初始值GydF4y2BaGGydF4y2Ba
作为GydF4y2Ba1GydF4y2Ba
。GydF4y2Ba代码根GydF4y2Ba-config:libGydF4y2Ba- 全球GydF4y2Ba{'g',1}GydF4y2Ba酒吧GydF4y2Ba
代码生成器生成文件GydF4y2Ba
bar_initialize.cGydF4y2Ba
在GydF4y2Ba
, 在哪里GydF4y2Ba工作GydF4y2Ba
\ codegen \ lib \ barGydF4y2Ba
是包含的文件夹GydF4y2Ba工作GydF4y2Ba
bar.mGydF4y2Ba
。功能GydF4y2Babar_initializeGydF4y2Ba
初始化全局变量GydF4y2BaGGydF4y2Ba
。GydF4y2Bavoid bar_initialize(void){g = 1.0;isInitialized_bar = true;}GydF4y2Ba
酒吧GydF4y2Ba
包括一个电话GydF4y2Babar_initializedGydF4y2Ba
。它使用布尔值GydF4y2BaisInitialized_barGydF4y2Ba
为了确保初始化函数仅自动称为一次。GydF4y2Badouble bar(void){if(!isInitialized_bar){bar_initialize();}返回g;}GydF4y2Ba
您的MATLAB代码包含一个可以生成非限值值的操作(GydF4y2Ba
infGydF4y2Ba
或者GydF4y2Ba南GydF4y2Ba
)。例如,定义MATLAB函数GydF4y2BafooGydF4y2Ba
打电话GydF4y2Ba阶乘GydF4y2Ba
。这GydF4y2Ba阶乘GydF4y2Ba
功能快速增长并返回GydF4y2BainfGydF4y2Ba
对于大于一定阈值的输入。对于类型的输入GydF4y2Ba双倍的GydF4y2Ba
,阈值是GydF4y2Ba170GydF4y2Ba
。执行GydF4y2Ba阶乘(171)GydF4y2Ba
在Matlab返回中GydF4y2BainfGydF4y2Ba
。GydF4y2Ba功能GydF4y2Bay = foo(a)y =阶乘(a);GydF4y2Ba结尾GydF4y2Ba
生成一个静态库GydF4y2Ba
fooGydF4y2Ba
。GydF4y2Ba代码根GydF4y2Ba-config:libGydF4y2BafooGydF4y2Ba-argsGydF4y2Ba{1}GydF4y2Ba
代码生成器生成文件GydF4y2Ba
foo_initialize.cGydF4y2Ba
在GydF4y2Ba
, 在哪里GydF4y2Ba工作GydF4y2Ba
\ codegen \ lib \ fooGydF4y2Ba
是包含的文件夹GydF4y2Ba工作GydF4y2Ba
foo.mGydF4y2Ba
。功能GydF4y2Bafoo_initializeGydF4y2Ba
调用支持代码金宝app以获取无限数据,GydF4y2Bart_initinfandnanGydF4y2Ba
,在另一个生成的文件中定义GydF4y2Bart_nonfinite.cGydF4y2Ba
。GydF4y2Bavoid foo_initialize(void){rt_initinfandnan();isInitialized_foo = true;}GydF4y2Ba
终止功能GydF4y2Ba
生成的终止函数的名称是GydF4y2Baprimary_function_nameGydF4y2Ba_端GydF4y2Ba
, 在哪里GydF4y2Baprimary_function_nameGydF4y2Ba是您在生成代码时指定的第一个MATLAB入口点功能的名称。终止功能释放了分配的内存并执行其他清理操作。GydF4y2Ba
终止功能还可以包括您指定的自定义清理代码。要在终止函数中包括自定义代码,请执行以下操作之一:GydF4y2Ba
在代码配置对象中,设置GydF4y2Ba
定制者GydF4y2Ba
到包含自定义代码的字符向量。GydF4y2Ba或者,在GydF4y2BaMATLAB编码器GydF4y2Ba应用程序,在GydF4y2Ba自定义代码GydF4y2Ba选项卡,为终止功能指定自定义代码。GydF4y2Ba
如果生成MEX函数,则生成的代码将自动包含端接函数的调用。GydF4y2Ba
如果您生成独立代码,则生成的代码不会自动包含对终止函数的调用。在这种情况下,您必须在最后一次调用生成的入口点功能后手动调用终止功能。GydF4y2Ba
终止功能还用于清除持续变量的状态。持久变量保留其状态,直到调用终止功能为止。有关更多信息,请参阅GydF4y2Ba生成持续变量的代码GydF4y2Ba。GydF4y2Ba
生成的终止功能的示例GydF4y2Ba
定义此MATLAB函数:GydF4y2Ba
功能GydF4y2Bay = barGydF4y2Ba全球的GydF4y2Bag y = g;GydF4y2Ba结尾GydF4y2Ba
生成一个静态库GydF4y2Ba酒吧GydF4y2Ba
。指定初始值GydF4y2BaGGydF4y2Ba
作为GydF4y2Ba1GydF4y2Ba
。GydF4y2Ba
代码根GydF4y2Ba-config:libGydF4y2Ba- 全球GydF4y2Ba{'g',1}GydF4y2Ba酒吧GydF4y2Ba
代码生成器生成文件GydF4y2Babar_terminate.CGydF4y2Ba
在GydF4y2Ba
, 在哪里GydF4y2Ba工作GydF4y2Ba
\ codegen \ lib \ barGydF4y2Ba
是包含的文件夹GydF4y2Ba工作GydF4y2Ba
bar.mGydF4y2Ba
。功能GydF4y2Babar_terminateGydF4y2Ba
设置布尔值GydF4y2BaisInitialized_barGydF4y2Ba
(那是GydF4y2Ba真的GydF4y2Ba
初始化函数调用之后)GydF4y2Ba错误的GydF4y2Ba
。GydF4y2Ba
void bar_terminate(void){isinitialized_bar = false;}GydF4y2Ba
也可以看看GydF4y2Ba
coder.mexcodeconfigGydF4y2Ba
|GydF4y2BaCoder.CodeConfigGydF4y2Ba
|GydF4y2BaCoder.embeddedCodeConfigGydF4y2Ba