__restrict
__declspec
Как и модификатор ( restrict
), __restrict
ключевое слово (два ведущих символа подчеркивания "_") указывает, что символ не является псевдонимом в текущем область. Ключевое слово __restrict
отличается от __declspec (restrict)
модификатора следующим образом:
__restrict
Ключевое слово действительна только для переменных и__declspec (restrict)
действительна только в объявлениях и определениях функций.__restrict
аналогиченrestrict
C начиная с C99 и доступен в/std:c11
или/std:c17
режиме, но__restrict
может использоваться как в программах C++, так и в C.При
__restrict
использовании компилятор не будет распространять свойство без псевдонима переменной. То есть, если вы назначаете__restrict
переменную не переменной, компилятор по-прежнему разрешает псевдоним переменной, отличной__restrict
от __restrict. Это отличается от поведения языкаrestrict
C99 C ключевое слово.
Как правило, если вы хотите повлиять на поведение всей функции, используйте __declspec (restrict)
вместо ключевое слово.
Для совместимости с предыдущими версиями является синонимом__restrict
, _restrict
если не указан параметр /Za
компилятора (отключить расширения языка).
В Visual Studio 2015 и более поздних __restrict
версиях можно использовать в ссылках на C++.
Примечание.
При использовании переменной, которая также имеет volatile
ключевое слово, volatile
будет иметь приоритет.
Пример
// __restrict_keyword.c
// compile with: /LD
// In the following function, declare a and b as disjoint arrays
// but do not have same assurance for c and d.
void sum2(int n, int * __restrict a, int * __restrict b,
int * c, int * d) {
int i;
for (i = 0; i < n; i++) {
a[i] = b[i] + c[i];
c[i] = b[i] + d[i];
}
}
// By marking union members as __restrict, tell compiler that
// only z.x or z.y will be accessed in any given scope.
union z {
int * __restrict x;
double * __restrict y;
};
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по