Можете ли вы использовать ограниченные указатели для доступа к одному и тому же объекту в некоторых случаях?

Большинство определений ограничения говорят, что этоЭто обещание от программиста компилятору, что для времени жизни указателя указатель является единственным способом доступа к объекту. Это позволяет компилятору оптимизировать вывод, поскольку он знает, что к нему будет обращаться только один указатель, и поэтому он может быть изменен только им. Что, если я правильно понимаю, обычно означает, что программа ненеобходимо перезагрузить значение, на которое указывает указатель.

Если это правильно, то должно быть несколько исключений, когда ключевое слово restrict должно быть пригодным для использования, даже если оно противоречит цели его использования.

Одна вещь, которая приходит на ум, - это когда данные, на которые указывает указатель, никогда не изменяются в течение жизни указателя. В этом случае нет необходимости перезагружать данные, даже если указатели указывают на одно и то же место, потому что они неизменить время жизни указателей. Например.:

int max(int *restrict a, int *restrict b) {
  return((*a > *b) ? *a : *b);
}

int main(void) {
  int num = 3;
  int max = max(&num, &num);
}

Является ли это допустимым использованием ограничения, даже если оно противоречит тому, как оно должно было использоваться? Приведет ли использование такого ключевого слова restrict к неопределенному поведению?

Ответы на вопрос(2)

Ваш ответ на вопрос