Хотя ответ Джеффа правильный, т. е. вы всегда можете сделать указатель на выделенный массив, факт в том, что компилятор знает во время компиляции, что значения tmp не будут иметь псевдоним, потому что переменная объявлена как фактический массив, а не указатель. Единственная возможность создать псевдоним массива — это объявить указатель на него, поэтому, если вы этого не сделаете, нет необходимости объявлять его как restrict
. Это более очевидно, если tmpvalues
— единственная переменная, которую вы будете иметь в функции.
Проблема может возникнуть, если вы передаете указатель другой функции, тогда там вы должны указать, ограничен ли полученный указатель или нет.
Документация, связанная с этой темой, с которой я столкнулся, включает C99:
Пусть D будет объявлением обычного идентификатора, который предоставляет средства для обозначения объекта P как указателя с ограничением на тип T.
Обратите внимание, что это относится только к указателям.
Этот другой документ от TI содержит некоторые советы по настройке производительности с использованием restrict
ключевое слово. В дополнение ко всем подсказкам в разделе 3.3 приведены примеры, когда можно применять этот квалификатор типа, а когда нет. Найдите объявление массива x
в середине страницы 16, в нем говорится, что он не объявляет указатель и, следовательно, не может быть квалифицирован restrict
.
person
Harald
schedule
25.08.2016
float *restrict tmpvalues
превосходит VLA? (предпочтительно с уже установленным временным кодом) - person M.M   schedule 23.05.2014