MISRA 20.2 Нарушение недопонимания - PullRequest
0 голосов
/ 26 апреля 2018

Почему следующий код является нарушением MISRA 20.2?

#define abs(a)   (((a) < (0)) ? -(a) : (a))

Насколько я понимаю из тем, 20.2 не касается идентификатора препроцессора, тогда почему я получаю нарушение за то же самое.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Об этом также спрашивали на форуме MISRA , на котором был получен следующий "официальный" MISRA C ответ:

Правило 20.2 относится к объявлению непроцессорных имен. т.е. объекты, имена функций, typedefs. Этот код не является нарушением правила 20.2, но нарушает правило 20.1, которое не позволяет использовать стандартные библиотечные функции в # define.

Примечание: см. Профиль для отказа от ответственности

0 голосов
/ 27 апреля 2018

int abs(int n) - это стандартная библиотечная функция в C, поэтому вы не можете использовать имя 'abs' для своей собственной функции или макроса.

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