switch case 在C中的编译链接规则
前阵子做飞思卡尔BootLoad的时候发现,switch case的秘密。
当他的case数小于等于5的时候,采用局部变量的形式跳转。
而当他大于5时,他会建一个全局的跳转表实现跳转。这样,
如果我们做bootLoad 为了方便或者某些特定的情况下,我们
没有建立MMU,不进行全局区的管理,只用栈(cpu自己管理和
释放),就会出现编译失败。解决办法就是建立内存管理,或者
使用if else代替。
发布时间: 2012-11-26 11:48:50 作者: rapoo
switch case 在C中的编译链接规则
前阵子做飞思卡尔BootLoad的时候发现,switch case的秘密。
当他的case数小于等于5的时候,采用局部变量的形式跳转。
而当他大于5时,他会建一个全局的跳转表实现跳转。这样,
如果我们做bootLoad 为了方便或者某些特定的情况下,我们
没有建立MMU,不进行全局区的管理,只用栈(cpu自己管理和
释放),就会出现编译失败。解决办法就是建立内存管理,或者
使用if else代替。