主要内容GydF4y2Ba

使用生成的初始化和终止功能GydF4y2Ba

从MATLAB生成C / C ++代码时GydF4y2Ba®GydF4y2Ba代码,代码生成器自动生成两个内务函数,初始化和终止。初始化函数初始化所生成的C / C ++入口函数运行的状态。必须在第一次调用入口点函数之前调用它。终止功能可分配内存并执行其他清理操作。必须在呼叫最后一次调用入学点函数后调用它。GydF4y2Ba

初始化功能GydF4y2Ba

生成的初始化功能的名称是GydF4y2Baprimary_function_name.GydF4y2Ba_初始化GydF4y2Ba, 在哪里GydF4y2Baprimary_function_name.GydF4y2Ba是您在生成代码时指定的第一个MATLAB入门点函数的名称。初始化函数初始化生成的入口函数运行的状态。初始化功能可以包括:GydF4y2Ba

  • 呼叫支持非小型数据金宝app代码(GydF4y2BaINF.GydF4y2Ba和GydF4y2Ba南GydF4y2Ba)。如果MATLAB代码包含可以生成非小型值的操作,则会生成这些调用。GydF4y2Ba

  • 初始化的代码GydF4y2Ba全球的GydF4y2Ba或者GydF4y2Ba执着的GydF4y2Ba变量。GydF4y2Ba

  • 创建指定的初始状态的自定义代码。要在初始化函数中包含自定义代码,请执行以下操作之一:GydF4y2Ba

    • 在代码配置对象中,设置GydF4y2BaCustomInitializer.GydF4y2Ba到包含自定义代码的字符矢量。GydF4y2Ba

    • 在里面GydF4y2BaMatlab Coder™GydF4y2Ba应用程序,在GydF4y2Ba自定义代码GydF4y2Ba选项卡,为初始化功能指定自定义代码。GydF4y2Ba

在某些情况下,不需要初始化代码,并且生成的初始化函数为空。GydF4y2Ba

调用初始化函数GydF4y2Ba

如果生成MEX函数,则生成的代码会自动包含对初始化功能的调用。如果生成独立代码,则存在两种可能的情况:GydF4y2Ba

  • 默认情况下,如果初始化函数是非空的,则代码生成器包括在生成的C / C ++入口点函数的开始时对初始化功能的调用。生成的代码还包括检查,以确保仅在一次自动调用初始化函数,即使存在多个入口点函数。在这种情况下,您无需手动调用初始化函数。GydF4y2Ba

    如果初始化函数为空,则生成的C / C ++入口点函数不包括对初始化功能的调用。GydF4y2Ba

  • 您可以选择不包含生成的入口点函数中的初始化函数的调用。执行以下操作之一:GydF4y2Ba

    • 在一个GydF4y2Bacoder.codeConfigGydF4y2Ba或者GydF4y2BaCoder.embeddedCodeConfigGydF4y2Ba对象,集合GydF4y2BaRunInitializeFCN.GydF4y2Ba到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 =酒吧GydF4y2Ba全球的GydF4y2Bag y = g;GydF4y2Ba结尾GydF4y2Ba

    生成静态库GydF4y2Ba酒吧GydF4y2Ba。指定初始值GydF4y2BaGGydF4y2Ba作为GydF4y2Ba1GydF4y2Ba。GydF4y2Ba

    Codegen.GydF4y2Ba-config:libGydF4y2Ba- 玻璃GydF4y2Ba{'g',1}GydF4y2Ba酒吧GydF4y2Ba

    代码生成器生成文件GydF4y2Babar_initialize.cGydF4y2Ba在GydF4y2Ba工作GydF4y2Ba\ codegen \ lib \ barGydF4y2Ba, 在哪里GydF4y2Ba工作GydF4y2Ba是包含的文件夹GydF4y2BabarGydF4y2Ba。功能GydF4y2BaBar_Initialize.GydF4y2Ba初始化全局变量GydF4y2BaGGydF4y2Ba。GydF4y2Ba

    void bar_initialize(void){g = 1.0;isinitialized_bar = true;}GydF4y2Ba
    生成的C函数GydF4y2Ba酒吧GydF4y2Ba包括呼叫GydF4y2Babar_initializedGydF4y2Ba。它使用布尔值GydF4y2BaIsinitialized_Bar.GydF4y2Ba确保仅一次性调用初始化函数一次。GydF4y2Ba

    双杠(void){if(!isinitialized_bar){bar_initialize();}返回g;}GydF4y2Ba
  • 您的MATLAB代码包含一个可以生成非小型值的操作(GydF4y2BaINF.GydF4y2Ba或者GydF4y2Ba南GydF4y2Ba)。例如,定义MATLAB函数GydF4y2BaFooGydF4y2Ba那个呼叫GydF4y2Ba阶乘GydF4y2Ba。这GydF4y2Ba阶乘GydF4y2Ba函数快速增长并返回GydF4y2BaINF.GydF4y2Ba对于大于某个阈值的输入。输入类型的输入GydF4y2Ba双倍的GydF4y2Ba,阈值是GydF4y2Ba170.GydF4y2Ba。执行GydF4y2Ba因子(171)GydF4y2Ba在Matlab回报中GydF4y2BaINF.GydF4y2Ba。GydF4y2Ba

    功能GydF4y2Bay = foo(a)y =因子(a);GydF4y2Ba结尾GydF4y2Ba

    生成静态库GydF4y2BaFooGydF4y2Ba。GydF4y2Ba

    Codegen.GydF4y2Ba-config:libGydF4y2BaFooGydF4y2Ba-  args.GydF4y2Ba{1}GydF4y2Ba

    代码生成器生成文件GydF4y2Bafoo_initialize.c.GydF4y2Ba在GydF4y2Ba工作GydF4y2Ba\ codegen \ lib \ fooGydF4y2Ba, 在哪里GydF4y2Ba工作GydF4y2Ba是包含的文件夹GydF4y2BaFoo.m.GydF4y2Ba。功能GydF4y2Bafoo_initialize.GydF4y2Ba呼叫支持代码金宝app的非小型数据,GydF4y2BaRT_INITINFANDNAN​​.GydF4y2Ba,它在另一个生成的文件中定义GydF4y2BaRT_NONFINITE.c.GydF4y2Ba。GydF4y2Ba

    void foo_initialize(void){rt_initinfandnan();Isinitialized_foo = true;}GydF4y2Ba

终止功能GydF4y2Ba

生成的终止功能的名称是GydF4y2Baprimary_function_name.GydF4y2Ba_terminate.GydF4y2Ba, 在哪里GydF4y2Baprimary_function_name.GydF4y2Ba是您在生成代码时指定的第一个MATLAB入门点函数的名称。终止功能可分配内存并执行其他清理操作。GydF4y2Ba

终止功能还可以包括您指定的自定义清理代码。要在终终函数中包含自定义代码,请执行以下操作之一:GydF4y2Ba

  • 在代码配置对象中,设置GydF4y2BaCustomterMinator.GydF4y2Ba到包含自定义代码的字符矢量。GydF4y2Ba

  • 或者,在GydF4y2BaMatlab编码器GydF4y2Ba应用程序,在GydF4y2Ba自定义代码GydF4y2Ba选项卡,为终止功能指定自定义代码。GydF4y2Ba

如果生成MEX函数,则生成的代码会自动包含对终止功能的调用。GydF4y2Ba

如果生成独立代码,则生成的代码不会自动包含对终止功能的调用。在这种情况下,您必须在最后一次调用生成的入学点函数后手动调用终止功能。GydF4y2Ba

终止功能也用于清除持久变量的状态。持久变量保留其状态,直到调用终止功能。有关更多信息,请参阅GydF4y2Ba为持久变量生成代码GydF4y2Ba。GydF4y2Ba

生成的终止功能示例GydF4y2Ba

定义此MATLAB功能:GydF4y2Ba

功能GydF4y2BaY =酒吧GydF4y2Ba全球的GydF4y2Bag y = g;GydF4y2Ba结尾GydF4y2Ba

生成静态库GydF4y2Ba酒吧GydF4y2Ba。指定初始值GydF4y2BaGGydF4y2Ba作为GydF4y2Ba1GydF4y2Ba。GydF4y2Ba

Codegen.GydF4y2Ba-config:libGydF4y2Ba- 玻璃GydF4y2Ba{'g',1}GydF4y2Ba酒吧GydF4y2Ba

代码生成器生成文件GydF4y2Babar_terminate.c.GydF4y2Ba在GydF4y2Ba工作GydF4y2Ba\ codegen \ lib \ barGydF4y2Ba, 在哪里GydF4y2Ba工作GydF4y2Ba是包含的文件夹GydF4y2BabarGydF4y2Ba。功能GydF4y2Babar_terminate.GydF4y2Ba设置布尔值GydF4y2BaIsinitialized_Bar.GydF4y2Ba(那样设置为GydF4y2Ba真的GydF4y2Ba初始化函数调用后)到GydF4y2Ba错误的GydF4y2Ba。GydF4y2Ba

void bar_terminate(void){isinitialized_bar = false;}GydF4y2Ba

也可以看看GydF4y2Ba

|GydF4y2Ba|GydF4y2Ba

相关话题GydF4y2Ba