Если я получил правильное ключевое слово C99 restrict
, то присвоить ему указатель - это обещание, что ссылки, которые он ссылается, не будут изменены за компилятором обратно через сглаживание.
В отличие от того, как я понимаю квалификатор const
, как в документации, связанной с компилятором, данный объект не будет изменен за спиной человека, пишущего код. Компилятор может получить подсказку как побочный эффект, но как программиста мне все равно.
Аналогичным образом было бы уместным рассматривать квалификатор restrict
в прототипе функции как требование, чтобы пользователь обеспечивал эксклюзивный доступ ( "избегать сглаживания" или, может быть, что-то более сильное) на время вызова? Должен ли он использоваться как "документация"?
Кроме того, есть ли что-то понять в том, что restrict
квалифицирует указатель, а не данные, на которые он указывает (как это делает const
)?
EDIT: Я изначально считал, что restrict
может иметь последствия с потоковым кодом, но это кажется неправильным, поэтому я удаляю ссылки на темы из вопроса, чтобы избежать путаницы с читателями.