J'ai remarqué une utilisation intensive du mot clé restrict
dans l'un de nos anciens projets.
Je comprends la logique de restrict
, mais je doute de son utilité lorsqu'elle est appliquée à certaines de ces fonctions.Le mot-clé restrict n'a-t-il aucun sens sur les paramètres des types de pointeurs uniques?
Prenez les deux exemples suivants:
void funcA(int *restrict i){
// ...
}
void funcB(int *restrict i, float *restrict f){
// ...
}
int main(){
int i = 1;
float f = 3.14;
funcA(&i);
funcB(&i,&f);
}
Y at-il une raison valable on pourrait marquer les paramètres de funcA
et funcB
avec restrict
?
funcA
prend seulement 1 paramètre. Comment pourrait-il avoir la même adresse que toute autre chose?
funcB
prend des paramètres de différents types. S'il s'agissait de la même adresse, cela ne viendrait-il pas à briser la stricte règle des alias?
Si la fonction peut utiliser des pointeurs/objets globaux, je pense que 'restrict' a une valeur. – chux
En ce qui concerne les pointeurs vers différents types, C a spécifié 'char * fgets (char * restreindre s, int n, FICHIER * restreindre le flux);' il semble que le comité standard voit la valeur avec 'restrict' à différents types. – chux
Intéressant. Bien que le char ne soit pas un peu une exception car un char * est autorisé à pointer vers un autre type. –