Sdílet prostřednictvím


__restrict

Stejně jako restrict__declspec , modifikátor, __restrict klíčové slovo označuje symbol není alias v aktuálním oboru. __restrict Klíčové slovo se liší od restrict __declspec modifikátor následujícími způsoby:

  • __restrict Je platný pouze v proměnné, klíčové slovo a __declspec(restrict) je platný pouze v deklarace funkce a definice.

  • Při __restrict je použita, kompilátor bude rozšířena vlastnost alias ne proměnné.Pokud přiřadíte __restrict proměnné než-__restrict proměnné, kompilátor nebude neznamená, které nejsou-__restrict proměnná není s aliasem.Tím se liší od chování restrict klíčové slovo ze specifikace C99.

Obecně je-li vliv na chování celé funkce je lepší používat __declspec než klíčové slovo.

__restrictje podobný restrict z C99 spec, ale __restrict lze v C++ nebo c programy.

Žádná podpora pro __restrict na odkazy v jazyce C++. 

[!POZNÁMKA]

Při použití na proměnnou, která má také těkavé (C++) klíčové slovo, volatile budou mít přednost.

Příklad

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

Viz také

Referenční dokumentace

Klíčových slov jazyka C++