ZHCU820Y September 2004 – June 2021
内在函数 __never_executed( ) 对于测试 MSP430 中断矢量发生器的值特别有用,例如定时器 A (TAIV) 的矢量发生器。MSP430 矢量发生器值映射到一个中断源,其特征是处于特定范围内,只能取偶数值。处理矢量发生器中呈现的特定中断源的常用方法是使用 switch 语句。但 C 语言对编译器的限制在于,它无法假设 switch 表达式具有的值。编译器必须生成代码,以处理每个可能的值,导致出现低效代码。
内在函数 __never_executed( ) 可用于向编译器断言,switch 表达式只能处理 switch 代码块中的 case 标签代表的值。利用此断言,编译器就可避免生成测试代码来处理 switch case 标签未指定的值。此断言特别适用于处理以矢量发生器为特征的值。
Topic Link Label7.8.5.1.1 展示了 switch 代码块,用于处理计时器 B (TBIV) 矢量发生器的值。