Достаточно написать
uint8_t CalculateChecksum(const communicationBlock_t* messageBlock);
Это означает, что вы не можете изменить указанное содержимое.Если вы хотите заблокировать получение указателя на другой адрес, вы должны написать * const
.
Но в этом нет необходимости, messageBlock
является локальной копией исходного указателя, и вызывающей стороне не нужно заботиться о том, что эта функция делает с ним внутри.
Это вопрос стиля:
Некоторые считают, что каким-то образом это добавляет дополнительную безопасность, сохраняя внутреннюю часть функции постоянной.Они также считают, что имеет смысл писать такие вещи, как void func (const int n)
.Многие, кто проповедует этот стиль, являются программистами на C ++, которые const
квалифицируют функции-члены, что является совершенно другим делом и в любом случае не может быть выполнено в C.
Другие (как я) считают, что const-квалифицирующие параметры с * const
считается ненужным беспорядком, который сбивает с толку читателя, поскольку объявление функции следует рассматривать как документацию для вызывающей функции, а не для реализации определения функции.