Alternativa para goto en programación c [cerrado]
Frecuentes
Visto 9,723 equipos
1
¿Hay alguna alternativa para la instrucción goto en la programación c?
En realidad, estoy planeando hacer un nuevo simulador para mi aplicación. Para este simulador, necesito ir a un lugar particular una y otra vez dentro de main desde alguna otra función. Goto solo funciona con las funciones; de lo contrario, no funcionará. ¿Puede alguien sugerirme otros métodos alternativos?
Gracias de antemano.
4 Respuestas
6
Separar su main
en funciones. En lugar de saltar a un lugar dentro main
, ejecute una función apropiada. Eso podría requerir pasar algunos parámetros a las funciones, pero seguramente vale la pena.
Respondido 08 Feb 14, 12:02
Pero planeo más de 30 declaraciones de lugar por goto, así que creo que goto puede ser la mejor opción. En lugar de crear 30 funciones para eso, solo pedí una alternativa para ir a, por favor, sugiérame, gracias por su respuesta anterior. - Jeyamarán
@Jeyamaran Primero, 30 funciones es una cantidad razonable, según los requisitos reales. En segundo lugar, estoy casi seguro de que la diferencia entre estas 30 funciones se encuentra principalmente en los datos procesados: este número puede reducirse fácilmente a mucho menos al utilizar parámetros que generalizarán los datos. - Nombre de usuario
gracias esta puede ser la mejor opcion. @paquete de hielo - Jeyamarán
4
Puede usar sus propias funciones y llamarlo cuando lo necesite.
Respondido 08 Feb 14, 12:02
Pero planeo más de 30 declaraciones de lugar por goto, así que creo que goto puede ser la mejor opción. En lugar de crear 30 funciones para eso, solo pedí una alternativa para Goto, por favor sugiera. - Jeyamarán
@Jeyamaran goto nunca es la mejor opción y, a menudo, es la peor. - HAL9000
Dividir su programa en pequeñas unidades funcionales es una buena práctica. - hacks
oh k. pero es solo un simulador, así que solo planeo ir a. Yo también sé que goto puede colapsar nuestra funcionalidad. tratar de ir para la función. - Jeyamarán
@Jeyamaran; Eso estaría mejor. - hacks
0
Ponga "el lugar al que debe ir" dentro de una función y llame a esa función cada vez que lo necesite.
Por supuesto, esa función tendrá su propio alcance y no podrá acceder a las variables desde el punto de llamada.
Por lo tanto, deberá pasar los datos requeridos a la función o hacer uso (desaconsejado) de globales
Respondido 08 Feb 14, 12:02
0
Para este simulador, necesito ir a un lugar particular una y otra vez dentro de main desde alguna otra función.
Esto puede conducir rápidamente a un código espagueti. goto
dentro de una función para saltar HACIA EL FUTURO, por ejemplo, en código de limpieza, tiene sus usos justos. Saltar entre funciones: No hagas esto, esto es horrible (técnicamente se puede hacer con algunos ayudantes que no voy a nombrar aquí, para evitar la tentación de ti).
Entonces, lo que tratas de hacer suena mucho a lo que se llama corutinas a mi. Y eso se puede hacer con C, utilizando alguna construcción llamada "Dispositivo de Duff". Hay un buen artículo sobre esto aquí: http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
Y luego hay una biblioteca de rutinas C en Google Code: https://code.google.com/p/libconcurrency/
Respondido 08 Feb 14, 12:02
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c goto or haz tu propia pregunta.
meta.stackexchange.com/questions/66377/cuál-es-el-problema-xy - Karoly Horvath
Hay
setjmp()
ylongjmp()
si te sientes pervertido... - Brendan