Se il compilatore non supporta la parola chiave restrict
, togliere la parola chiave (a).
Viene utilizzato per indicare al compilatore che (lo sviluppatore) promette che i puntatori seguono determinate proprietà che coinvolgono l'aliasing e questo, a sua volta, consente al compilatore di eseguire determinate ottimizzazioni che altrimenti non sarebbero necessariamente sicure.
Se si omette quella parola chiave in un compilatore che la supporta, impedisce tali ottimizzazioni (lieve svantaggio).
Se si lascia fuori per compilatori che non lo fanno supporto che parola chiave, il lato negativo è pari a zero (dal momento che non supportano queste ottimizzazioni comunque) e il rialzo è notevole, come in "che verrà compilato per voi ":-)
(a) si consiglia per garantire la compilazione in modalità C99 prima. Mentre può essere vero che si sta utilizzando un vecchio gcc
che non capisce restrict
, è altrettanto possibile che non sta compilando in modalità C99, come ad esempio con -std=c99
(gcc
documenti sembrano indicare che restrict
è stato supportato ancora indietro alla versione 3.0).
Se, per qualche motivo, non è possibile attivare la modalità C99, penso che gcc
abbia un'estensione che consente di utilizzare __restrict
.
Un modo semplice per estrarre la parola chiave (se necessario): utilizzare '-Drestrict' nella riga di comando. Il preprocessore lo prenderà per te e non dovrai modificare alcun codice. Rende facile tornare in futuro se si passa a un compilatore C99, pure. –