Estoy escribiendo un intérprete y me gustaría poder almacenar cualquier valor que devuelva una función en un puntero vacío. No he tenido problemas para almacenar ints y varios punteros como punteros nulos, pero recibo un error cuando intento convertir un doble como puntero nulo. Entiendo que los dobles se almacenan de manera diferente que los enteros y los punteros a nivel de bits, pero no entiendo por qué no puedo colocar los bits que quiero en el puntero (suponiendo que tenga suficiente memoria asignada) y luego sacarlos más tarde, echándolos como un doble.
¿Es posible lanzar un puntero doble a un vacío utilizando una sintaxis que no conozco o no entiendo cómo funcionan los punteros vacíos?
¿Has considerado usar un union en lugar de ?
– André Holzner
4 de julio de 2011 a las 19:27
Parece que estás haciendo algo terriblemente mal. Por favor, mira la respuesta de David.
– pmr
4 de julio de 2011 a las 19:31
revisa mi respuesta en esta otra pregunta stackoverflow.com/questions/6539023/…
– Vinicius Kamakura
4 de julio de 2011 a las 19:32
David Heffernan
En muchos sistemas un double tiene 8 bytes de ancho y un puntero tiene 4 bytes de ancho. El primero, por tanto, no encajaría en el segundo.
Parece que estás abusando void*. Su solución implicará la asignación de espacio de almacenamiento al menos tan grande como el tipo más grande que necesita almacenar en alguna estructura similar a una variante, por ejemplo, un union.
No puedo creer que nunca haya oído hablar de un sindicato antes. Esto es exactamente lo que estaba buscando.
– Jack
4 de julio de 2011 a las 19:41
Por supuesto que es posible lanzarlo. Los punteros vacíos son lo que hace posible el polimorfismo en C. Debe saber de antemano qué está pasando a su función.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
¿Has considerado usar un
union
en lugar de ?– André Holzner
4 de julio de 2011 a las 19:27
Parece que estás haciendo algo terriblemente mal. Por favor, mira la respuesta de David.
– pmr
4 de julio de 2011 a las 19:31
revisa mi respuesta en esta otra pregunta stackoverflow.com/questions/6539023/…
– Vinicius Kamakura
4 de julio de 2011 a las 19:32