Приведение аргумента функции указателя NULL привело к нарушению правила 11.3 Мисры. - PullRequest
2 голосов
/ 28 марта 2011

Я определяю NULL_PTR как 0U

Затем вызываем функцию с этим NULL_PTR в качестве аргумента.

read_some_data(2U, (uint8_t *const) NULL_PTR, (uint8_t *const) NULL_PTR);

Прототип вызываемой функции:

int16_t read_some_data(const uint8_t id,   uint8_t *const data_1, uint8_t *const data_2);

При компиляции Мисра выдает ошибку нарушения правила 11.3 (приведение не должно выполняться между типом указателя и целым типом.)

Но если я просто передам NULL_PTR следующим образом, нетнарушение.

read_some_data(2U, NULL_PTR, NULL_PTR);

Какой лучший способ сделать?Подавить правило Misra 11.3 или просто пропустить NULL_PTR без каста?

Ответы [ 4 ]

3 голосов
/ 28 марта 2011

Что не так со стандартом NULL?

2 голосов
/ 28 марта 2011

Зачем разыгрывать, если вы можете избежать этого?Cast всегда делает код немного более грязным и намекает на то, что что-то хакерское было выполнено.

Так что я бы просто передал NULL_PTR без приведения. После проверки спецификации функции , что она может принимать NULL_PTR в качестве второго параметра !!!

1 голос
/ 27 сентября 2012

При компиляции Мисра поднял ошибку нарушения правила 11.3.

Просто чтобы быть педантичным, MISRA не вызвала ошибку нарушения, ваш компилятор выдал ошибку нарушения правила MISRA.

Из того, что вы написали, я не уверен, что сообщенное нарушение является правильным ...

С другой стороны, лично я определил бы NULL_PTR как (void *)0u, потому что (строго говоря) 0 не является указателем.

1 голос
/ 29 марта 2011

Я использовал NULL_PTR в своем заголовочном файле, чтобы избежать использования внутреннего файла конфигурации IAR yvals.h, который определяет NULL.Но это не проблема, так как мне, возможно, придется использовать yvals.h позже по другим причинам.

Независимо от того, используете ли NULL или NULL_PTR, я предполагаю, что общий консенсус заключается в том, чтобы передавать NULL без приведения.Моя функция не имеет никаких проблем с принятием.Таким образом, я могу избежать подавления правила Мисры 11.3.

Надеюсь, я иду правильным путем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...