主要内容

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

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

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

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

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

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

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

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

将Volatile数据传递给生成的函数时,结果不正确或行为未定义

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

当生成的代码定义了具有实参(形式形参)的函数时,函数定义并不适用挥发性的论点。因此,当其他生成的代码或您的外部代码调用该函数并传递一个volatile变量作为参数值时,被调用的函数会隐式丢弃volatile变量。

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

相关的话题