¿El calificador de tipo restringido C99 / C11 implica algo para funciones sin definición?

Supongamos que tenemos una declaración de función para la que no tenemos acceso a su definición:

void f(int * restrict p, int * restrict q, int * restrict r);

Dado que no sabemos cómo se accederá a los punteros, no podemos saber si una llamada activará un comportamiento indefinido o no, incluso si estamos pasando el mismo puntero, como explica el ejemplo en 6.7.3.1.10:

Las declaraciones de parámetros de función:

void h(int n, int * restrict p, int * restrict q, int * restrict r)
{
    int i;
    for (i = 0; i < n; i++)
        p[i] = q[i] + r[i];
}

ilustrar cómo un objeto no modificado puede ser alias a través de dos punteros restringidos. En particular, sia yb son matrices disjuntas, una llamada de la formah(100, a, b, b) tiene un comportamiento definido, porque la matrizb no se modifica dentro de la funciónh.

Por lo tanto, esrestrict superfluo en estos casos, excepto como una pista / anotación para las personas que llaman, a menos que sepamos algo más sobre la función?

Por ejemplo, tomemossprintf (7.21.6.6) de la biblioteca estándar:

Sinopsi

#include <stdio.h>
int sprintf(char * restrict s,
     const char * restrict format, ...);

Descripció

Lossprintfa función @ es equivalente afprintf, excepto que la salida se escribe en una matriz (especificada por el argumentos) en lugar de a una secuencia. (...)

e la sinopsis y la primera oración de la descripción, sabemos ques será escrito y eses es un puntero restringido. Por lo tanto, ¿podemos suponer (sin leer más) que una llamada como:

char s[4];
sprintf(s, "%s", s);

¿desencadenará un comportamiento indefinido?

Si es así, entonces: es la última oración desprintfescripción de @ superflua (incluso si es aclaratoria)

Si la copia se lleva a cabo entre objetos que se superponen, el comportamiento es indefinido.

Si no, entonces, al revés: es elrestrict calificador superfluo ya que la descripción es la que realmente nos permite saber cuál será el comportamiento indefinido?

Respuestas a la pregunta(3)

Su respuesta a la pregunta