restrict
, в отличие от более распространенного const
, является свойством указателя , а не данных , указывающих на . Следовательно, он принадлежит правой стороне объявления-модификатора '*
'. []
в объявлении параметра - это еще один способ записи *
. Собрав все это вместе, вы сможете получить желаемый эффект с помощью прототипа этой функции:
void foo(int *restrict *restrict ptrs, int num, int size)
{
/* body */
}
и не нужно новых имен. (Не проверено. Ваш пробег может отличаться. restrict
- это чистый совет по оптимизации, и он может на самом деле не делать ничего конструктивного с вашим компилятором.)