主要内容

保护全局数据常量而且挥发性类型限定符

在C语言中,使用类型限定符常量防止应用程序中的代码将新值赋给变量。在外部参与者(例如硬件设备)可以操作变量值的应用程序中,可以使用关键字挥发性防止编译器以损害变量值完整性的方式优化程序集代码。你也可以使用挥发性防止编译器消除存储常量数据,例如具有希望在执行期间优化的值的参数。

  • 要将限定符应用于模型中的单个数据项,包括通过使用非虚拟总线或参数结构创建的自定义结构,请将适当的预定义存储类直接应用于数据项。存储类阻止诸如默认参数行为从消除数据项的存储。有关示例,请参见类型限定符.有关直接应用存储类阻止的优化的信息,请参见生成的代码如何存储内部信号,状态和参数数据

    如果预定义的存储类不能满足您的需求,您可以创建自己的自定义存储类。若要使自定义存储类应用限定符,请在“自定义存储类设计器”中设置记忆的部分到适当的内置内存部分或到您创建的内存部分。有关更多信息,请参见使用自定义存储类设计器创建存储类

  • 默认情况下,您可以将限定符应用于模型数据的类别,例如参数或状态。当您向模型中添加块时,这些类别中的新数据项将携带您指定的限定符。有关更多信息,请参见配置数据的默认代码生成

    如果预定义的存储类不能满足您的需求,您可以使用嵌入式编码器字典创建自己的存储类。在Dictionary中,对于您的新存储类,选择下面适当的复选框限定符.有关更多信息,请参见创建代码定义以在代码映射编辑器中使用

维护常量入口点函数参数的正确性

当外部代码调用生成的入口点函数并通过时常量数据通过一个实参(形式形参)的函数,在函数定义中做出相应的实参常量,自定义执行(步骤)入口点功能界面。

将易失性数据传递给生成的函数时产生的错误结果或未定义的行为

生成的代码可以定义和调用模型入口点函数以外的函数。例如,您可以配置一个原子子系统,使其作为一个单独的函数出现在代码中。此外,查找表块,例如n-D查找表,通常会产生单独的效用函数。

当生成的代码定义一个有参数(正式形参)的函数时,函数定义将不应用挥发性对于这个论点。因此,当其他生成的代码或外部代码调用该函数并传递一个易失性变量作为参数值时,被调用的函数隐式地放弃了易失性。

如果应用程序在易失性数据的值发生变化时执行被调用的函数,则该函数可能产生不正确的结果或未定义的行为。特别是,对于为校准准备的查找表数据,通过应用常量而且挥发性,确保在应用程序执行查找实用程序时不校准数据。

相关的话题