Добавление / * const * / вместо квалификатора const к параметру char * в прототипе функции - PullRequest
1 голос
/ 25 апреля 2019

Я сталкиваюсь с функцией, которая берет указатель на массив char, но она выполняет только операции чтения из памяти, на которую указывает char *.

Я мог бы добавить const к прототипу напрямуюперед параметром char *, но это нарушит остальную часть неконстантного кода.Я решил добавить комментарий /*const*/ вместо этого, чтобы указать, что функция выполняет только операции чтения.

Однако это сбивает с толку моих коллег, и мне интересно, является ли добавление комментариев обычным подходом, и критика неоправданна.

Пример:

int func(const char *readat);

против

int func(/*const*/ char *readat);

1 Ответ

3 голосов
/ 25 апреля 2019

Добавление const к параметру функции не нарушит любой вызывающий код. Разрешается присваивать неконстантный объект константному объекту.

Так что это разрешено:

char c;
char *p = &c;
const char *cp = p;

Но это не так:

char c;
const char *cp = &c;
char *p = cp;
...