在RTEMS初始化例程中,我看到下面的代码.
void boot_card(const char *cmdline)
{
  rtems_interrupt_level  bsp_isr_level;
  /*
   * Special case for PowerPC: The interrupt disable mask is stored in SPRG0.
   * It must be valid before we can use rtems_interrupt_disable().
   */
  #ifdef PPC_INTERRUPT_DISABLE_MASK_DEFAULT
    ppc_interrupt_set_disable_mask( PPC_INTERRUPT_DISABLE_MASK_DEFAULT );
  #endif /* PPC_INTERRUPT_DISABLE_MASK_DEFAULT */
  /*
   *  Make sure interrupts are disabled.
   */
  (void) bsp_isr_level;      // <--- 
  rtems_interrupt_disable( bsp_isr_level );
  -- continues--
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,在开头,bsp_isr_level被声明为rtems_interrupt_level类型(最终类型定义为unsigned int).
但是,线路(void) bsp_isr_level;在做什么?(标有// < - 上面).这不是传递作为函数参数作为一个变量这里.
编辑:我发现在我的情况下变量是由rtems_interrupt_disable函数分配的(实际上它是一个宏#defined)所以它不是'没有被使用'.但是虽然已分配,但似乎未使用指定的值.我不知道这种语法是否也用于这种情况(值已分配但未使用).顺便说一句,我发现在RTEMS源代码树中有一个函数(实函数,而不是#defined)rtems_interrupt_disable,如下所示具有void参数.(在cpukit/rtems/src/intrbody.c中).(#defined版本在cpukit/rtems/include/rtems/rtems/intr.h中)
rtems_interrupt_level rtems_interrupt_disable( void )
{       
  rtems_interrupt_level previous_level;
  _ISR_Disable( previous_level );
  return previous_level;
} 
Run Code Online (Sandbox Code Playgroud)
所以也许这个语法可能只是用于第二个定义(该值作为void传递给函数).我想因为存在第二个定义,可以在某些构建案例中使用.