2015-07-20 3 views
1

Я использовал один API, в котором он получил адрес параметра в формальном аргументе. Но был я журнал и использовать этот адрес для целей печати в том, что я получил MISRA предупреждения, такие, как показано ниже, как вы можете увидеть:Как исправить предупреждение MISRA: MISRA 18.4 (C90-2012 adv.)

MISRA.PTR.ARITH Указатель используется в арифметической или массива индекса выражения

Как исправить это предупреждение?

Фрагмент кода (с комментариями):

int8u my_api(uint8_t *a1,uint8_t *a2,uint8_t *a3) 
{ 
    printf(" DeviceMAC: %02x%02x%02x%02x%02x%02x%02x%02x", 
     a1[0],a1[1],a1[2],a1[3],a1[4],a1[5],a1[6],a1[7]); 
    return 0; 
} 
+0

Не могли бы вы разместить образец кода, который вызывает предупреждение? – Melebius

+0

int8u my_api (uint8_t * a1, uint8_t * a2, uint8_t * a3) { \t printf ("DeviceMAC:% 02x% 02x% 02x% 02x% 02x% 02x% 02x% 02x", a1 [0], a1 [ 1], a1 [2], a1 [3], a1 [4], a1 [5], a1 [6], a1 [7]); return 0; } –

ответ

2

MISRA делает разницу между указателем и массива типы параметра. Если вы хотите использовать индексы массивов, ваш заголовок функции должен выглядеть так:

int8u my_api(uint8_t a1[], uint8_t a2[], uint8_t a3[]) 
+0

Благодарим человека за обмен информацией со мной :) –

 Смежные вопросы

  • Нет связанных вопросов^_^