__restrict
__declspec
Podobně jako modifikátor __restrict
( restrict
) označuje klíčové slovo (dvě úvodní podtržítka _), že symbol není aliasovaný v aktuálním oboru. Klíčové __restrict
slovo se liší od modifikátoru __declspec (restrict)
následujícími způsoby:
Klíčové
__restrict
slovo je platné pouze u proměnných a__declspec (restrict)
je platné pouze u deklarací a definic funkcí.__restrict
je podobný jazykurestrict
C počínaje jazykem C99 a je k dispozici v režimu nebo/std:c17
v/std:c11
režimu, ale__restrict
lze ho použít v programech C++ i C.Při
__restrict
použití kompilátor nerozšíří vlastnost bez aliasu proměnné. To znamená, že pokud přiřadíte proměnnou__restrict
jiné proměnné__restrict
, kompilátor stále umožní aliasovat proměnnou, která není __restrict. To se liší od chování klíčového slova jazykarestrict
C99 C.
Obecně platí, že pokud chcete ovlivnit chování celé funkce, použijte __declspec (restrict)
místo klíčového slova klíčové slovo.
Kvůli kompatibilitě s předchozími verzemi _restrict
je synonymem, pokud __restrict
není zadána možnost /Za
kompilátoru (Zakázat jazyková rozšíření ).
V sadě Visual Studio 2015 a novějších __restrict
můžete použít odkazy na jazyk C++.
Poznámka
Při použití u proměnné, která má také volatile
klíčové slovo, volatile
bude 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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro