Puntero a función que apunta a una etiqueta de ensamblador
¿Qué está mal en estas declaraciones cuando intento llamar a una etiqueta _exit en un archivo de ensamblador desde una función en C (en otro archivo)? ¡En lugar del comportamiento esperado, obtengo la primera instrucción de _exit tratada como un puntero a función! El compilador es gcc.
typedef void (*exit_f)(void);
extern exit_f _exit;
main() {
...
exit_f exit = (exit_f)_exit;
...
exit();
davy.ai
No hay problemas aparentes con el código compartido. Sin embargo, el problema podría estar relacionado con la etiquetación de
_exit
en el archivo de ensamblado. Si_exit
no está etiquetado correctamente, entonces la primera instrucción de_exit
podría ser tratada como un puntero de función en lugar de una etiqueta. Además, si el archivo de ensamblado no está enlazado correctamente con el archivo C, es posible que el compilador no pueda encontrar la etiqueta_exit
, lo que provocaría un comportamiento inesperado.