_never_executed()的目的是什么?

Jef*_*ffV 2 c embedded intrinsics c-preprocessor

我之前看过这个宏,但从未真正知道它的用途.任何人都可以阐明这一点吗?

Jay*_*ayG 5

这是用于优化的编译器内在函数,通常在嵌入式编程中看到.我唯一看到它使用的是在switch语句的"default"中断言变量的范围有限(为了更好的优化).例:

 /* Get DTMF index */
 switch(dtmf)
 {
     case '0':
     case '1':
     case '2':
     case '3':
     case '4':
     case '5':
     case '6':
     case '7':
     case '8':
     case '9':
         /* Handle numeric DTMF */
         index = dtmf - '0';
         break;
     case 'A':
     case 'B':
     case 'C':
     case 'D':
         index = dtmf - 'A' + 10;
         break:
     default:
         _never_executed();
         break;
 }
Run Code Online (Sandbox Code Playgroud)

可能不适用于所有编译器......