Partilhar via


__restrict

Como o modificado restrict __declspec, a palavra-chave __restrict indica que um símbolo não tem um alias no escopo atual. A palavra-chave __restrict difere do modificador restrict __declspec das seguintes maneiras:

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

  • Quando __restrict é usado, o compilador não propaga a propriedade no-alias de uma variável. Isto é, se você atribuir uma variável __restrict a uma variável não __restrict, o compilador não implicará que a variável não __restrict não possui alias. Isso é diferente do comportamento da palavra-chave restrict da especificação C99.

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

__restrict é semelhante a restrict das especificações C99, mas __restrict pode ser usado em programas C ou C++.

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

Dica

Quando usada em uma variável que também tem a palavra-chave volatile (C++), 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++