una sea saber restringir restricciones restriccion rango que para maximales inyectiva invertible inversas inversa intervalos geogebra funciones funcion donde dominio como acotar c linux multithreading ubuntu-10.04

sea - ¿Cuál es el significado de restringir en la firma de función?



restricciones del dominio (1)

Es algo introducido en C99 que le permite al compilador saber que el puntero que se pasa allí no apunta al mismo lugar que cualquier otro indicador en los argumentos. Si le da esta sugerencia al compilador, puede hacer algunas optimizaciones más agresivas sin romper el código.

Como ejemplo, considere esta función:

int add(int *a, int *b) { return *a + *b; }

Obviamente, agrega dos números a partir de los punteros. Podemos usarlo así si queremos:

// includes excluded for brevity int main(int argc, char **argv) { int number=4; printf("%d/n", add(&number, &number)); return 0; }

Obviamente, saldrá 8; Se está agregando 4 a sí mismo. Sin embargo, si añadimos restrict para add como así:

int add(int *restrict a, int *restrict b) { return *a + *b; }

Entonces el main anterior ahora es inválido; Está pasando &number como ambos argumentos. Sin embargo, puede pasar dos punteros que apuntan a diferentes lugares.

int main(int argc, char **argv) { int numberA=4; int numberB=4; printf("%d/n", add(&numberA, &numberB)); return 0; }

int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg);

Me gustaría saber cuál es el significado de restringir?