Partilhar via


__restrict

Como o restrict__declspec modificador, o __restrict palavra-chave indica que um símbolo não é o alias no escopo atual. O __restrict difere de palavra-chave a restrict __declspec modificador das seguintes maneiras:

  • O __restrict palavra-chave é válida somente em variáveis, e __declspec(restrict) é válido somente em definições e declarações de função.

  • Quando __restrict é usado, o compilador não irá propagar a propriedade não-alias de uma variável.Ou seja, se você atribuir um __restrict variável para um não-__restrict variável, o compilador irá não implica que o não-__restrict variável não é um alias.Isso é diferente do comportamento da restrict palavra-chave da especificação C99.

Em geral, se você afeta o comportamento de uma função inteira, é melhor usar o __declspec que a palavra-chave.

__restricté semelhante a restrict da especificação de C99, mas __restrict pode ser usado em programas de C++ ou C.

Não há suporte para __restrict em referências de C++. 

ObservaçãoObservação

Quando usado em uma variável que também tem a volátil (C++) palavra-chave, volatile terá precedência.

Exemplo

// __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;
};

Consulte também

Referência

Palavras-chave C++