ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
4 мая
1039928 Топик полностью
teap0t (25.09.2020 09:08 - 09:16, просмотров: 469) ответил RxTx на К тебе два вопроса на засыпку ;) Какой смысл имеет (или можно так - во что скомпилируется?) код:
Этот вопрос я тоже не понял, но схитрил и проверил компилятором. Получил то же самое, но без защитной обёртки (без подавления ошибок). Вот так выглядит вызов после препроцессора: 
  /* Check the parameters */
do { ((void)0); } while ( 0 );

С подавление ошибок:

  /* Check the parameters */
  do {_Pragma ("diag_suppress=Pm049") ((void)0); _Pragma ("diag_default=Pm049") } while ( 0 );

А! Понял.

Несколько обращений одно за другим. Извольте. Код:

  /* Check the parameters */
  assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
  assert_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));
  assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));

После замены:

  /* Check the parameters */
  do {_Pragma ("diag_suppress=Pm049") ((void)0); _Pragma ("diag_default=Pm049") } while ( 0 );
  do {_Pragma ("diag_suppress=Pm049") ((void)0); _Pragma ("diag_default=Pm049") } while ( 0 );
  do {_Pragma ("diag_suppress=Pm049") ((void)0); _Pragma ("diag_default=Pm049") } while ( 0 );


Вот фрагмент ассемблерного листинга:

NVIC_Init:
        PUSH     {R4-R6}
//  123   uint8_t tmppriority = 0x00, tmppre = 0x00, tmpsub = 0x0F;
        MOVS     R3,#+0
        MOVS     R1,#+0
        MOVS     R2,#+15
//  124
//  125   /* Check the parameters */
//  126   assert_param(IS_FUNCTIONAL_STATE(NVIC_InitStruct->NVIC_IRQChannelCmd));
//  127   assert_param(IS_NVIC_PREEMPTION_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelPreemptionPriority));
//  128   assert_param(IS_NVIC_SUB_PRIORITY(NVIC_InitStruct->NVIC_IRQChannelSubPriority));
//  129
//  130   if (NVIC_InitStruct->NVIC_IRQChannelCmd != DISABLE)
        LDRB     R4,[R0, #+3]
        CMP      R4,#+0
        BEQ.N    ??NVIC_Init_0
Это я, здравствуйте. http://the-epic-file.com/bookshelf.htm