1

Выполнение декларации прототипа для всех функций, определенных в файле C, считается хорошим программированием. Он также удовлетворяет требованиям MISRA. Но я видел, как разработчики игнорировали объявления прототипов для функций, которые определены до его использования. В таких случаях кажется, что объявление прототипа не является необходимым.Избегайте объявления прототипа для частной функции (определенного перед ее использованием) нарушения MISRA?

Возможно, кто-нибудь скажет мне, является ли это нарушением MISRA?

+0

Как уже было сказано, да, это нарушение. Однако само правило сформулировано слишком широко: хотя для статических функций, которые определены до их использования, все проблемы, упомянутые MISRA в качестве оправдания для правила, не применяются. Я упоминаю об этом, поскольку в этом конкретном случае я не считаю создание прототипа хорошей практикой программирования, но ненужное бремя обслуживания. Лучшая формулировка для правила будет идти в том направлении, что везде, где вызывается функция, должно быть замечено хотя бы объявление прототипа или определение этой функции. –

ответ

3

Правило 8.1 MISRA 2004 говорит, что

Функции должны иметь декларации прототипа и прототип должен быть виден как определение функции и вызов.

Объяснение дается следующим образом

Использование прототипов позволяет компилятору проверить целостность определений функций и вызовов. Без прототипов компилятор не обязан забирать определенные ошибки в вызовах функций. (например, разное количество аргументов из тела функции, несоответствие типов аргументов между вызовом и определением).

Функциональные интерфейсы, как было показано, являются причиной значительных проблем , и поэтому это правило считается очень важным.

Так что, да, вы бы voilate Мишра

+0

Не уверен, что авторские права на правила MISRA позволяют здесь вырезать контент. Тот, с которым я связан, явно нарушает авторское право. – Bruce

+0

@Bruce Вообще я сомневаюсь, что они возражают, если вы укажете отдельные правила, я бы предпочел, чтобы они поощряли его. Во всяком случае, я не думаю, что авторское право является хорошей причиной для публикации ссылок только для ссылок. – Lundin

+0

@ Lundin: Я согласен, что ссылка только плохая, я сделал это только на этот раз из-за причины авторского права. Я всегда смущаюсь, когда вопрос явно о материалах с ограниченными правилами диффузии – Bruce

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

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