Si almaceno un puntero a una función, y luego en un punto posterior durante la ejecución de mi programa, compárelo con la dirección de la misma función, se garantiza que las dos direcciones sean iguales.¿Se garantiza que las funciones C tienen una dirección de memoria fija?
E.g.
int foo(void){return 0;}
int (*foo_p)(void) = &foo;
assert(foo_p == &foo);
En el código anterior, la afirmación siempre está garantizada para tener éxito? ¿Hay circunstancias bajo las cuales la dirección de una función puede cambiar?