Restrict: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Ottimizzazione: più chiaro |
template cita "xxxx"; rinomina/fix nomi parametri; converto template cite xxx -> cita xxx; fix formato data |
||
Riga 2:
La [[parola chiave (informatica)|parola chiave]] <code>restrict</code> è usata nel linguaggio [[C (linguaggio)|C]] (a partire dallo standard C99) per qualificare un [[puntatore (programmazione)|puntatore]] come non soggetto ad [[pointer aliasing|aliasing]] da parte di altri puntatori non dichiarati a partire da esso. Nel dichiarare un puntatore <code>restrict</code>, il programmatore esegue una dichiarazione di intento, informando il [[compilatore]] che, nel suo intero ciclo di vita, solo quel puntatore ed eventualmente altri puntatori derivati a partire da esso saranno usati per accedere all'oggetto puntato. Se la dichiarazione di intento è violata dal programmatore e un altro puntatore è usato per accedere all'oggetto, il comportamento del programma è [[comportamento indefinito|indefinito]].
Tale informazione consente al compilatore di generare codice meglio ottimizzato: in principio, l'aggiunta di <code>restrict</code> allo standard C consente di colmare il divario rispetto a [[Fortran]] in applicazioni di [[calcolo numerico]].<ref name=drepper>{{
Lo standard del linguaggio [[C++]] non prevede la parola chiave <code>restrict</code>, ma molti compilatori implementano una parola chiave non-standard che fornisce un effetto analogo alla controparte in C, ad esempio <code>__restrict__</code> in [[GNU Compiler Collection|GCC]]<ref>{{cita web|url=https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html|titolo=Using the GNU Compiler Collection: Restricted Pointers}}</ref> o <code>__restrict</code> e <code>__declspec(restrict)</code> in [[Visual C++]].<ref>{{cita web|url=https://msdn.microsoft.com/it-it/library/5ft82fed.aspx|titolo=__restrict}}</ref>
Riga 45:
== Bibliografia ==
*{{Cita pubblicazione|url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf▼
▲|url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf
▲|title=ISO/IEC 9899:TC2 Committee Draft
|data=6 maggio 2005
▲|publisher=[[International Organization for Standardization|ISO]]
|accesso=22 dicembre 2008
▲|pages=108–112
}}
Riga 57 ⟶ 56:
* [http://www.cellperformance.com/mike_acton/2006/05/demystifying_the_restrict_keyw.html Demystifying The Restrict Keyword]: explanation and examples of use
* {{
* [http://www.lysator.liu.se/c/restrict.html Restricted Pointers in C]: the original rationale behind the definition
{{portale|informatica}}
|