Duda en una condición con return

Iniciado por Blaster, 28 Junio 2013, 03:31 AM

0 Miembros y 1 Visitante están viendo este tema.

Blaster

Mi duda esta en la linea indicada que pasa cuando se cumple la condicion y se ejecuta
la linea indicada, como ven es una funcion que no retorna ningun valor.

Código (cpp) [Seleccionar]
void clear_all_latency_tracing(struct task_struct *p)
{
unsigned long flags;

if (!latencytop_enabled)
return; //<==

raw_spin_lock_irqsave(&latency_lock, flags);
memset(&p->latency_record, 0, sizeof(p->latency_record));
p->latency_record_count = 0;
raw_spin_unlock_irqrestore(&latency_lock, flags);
}

pacoperico

El return interrumpe la ejecucion de la funcion y pasa el control a donde se haya invocado la funcion. De forma opcional una sentencia return puede devolver una expresion. No hay ningun tipo de conflicto por usar una sentencia return en una funcion de tipo void.

engel lex

como es una funcion de tipo void, no responde nada ni necesita un valor para pasar ("void" en inglés es "vacío")
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Blaster

Agradezco las respuestas pero creo que ya logre entenderlo, con esto forzamos a una funcion de tipo void a que no termine mientras que la condicion no se cumpla al ser asi fuerza la salida de la funcion y vuelve a la instruccion que la invoco.


satu

Buenas!!

Eso es lo que hace, aunque no me gusta eso de meter returns, prefiero esto:
Código (cpp) [Seleccionar]

void clear_all_latency_tracing(struct task_struct *p) {
    unsigned long flags;
     
    if (latencytop_enabled) {
        raw_spin_lock_irqsave(&latency_lock, flags);
        memset(&p->latency_record, 0, sizeof(p->latency_record));
        p->latency_record_count = 0;
        raw_spin_unlock_irqrestore(&latency_lock, flags);
    }
}


Llamadme maniático....  :silbar::silbar: jeje

Saludos
Breakbeat como forma de vida

eferion

Hombre, eliminar returns intermedios siempre es una buena opción como norma general... ya que es fácil si no saltarse alguna tarea a realizar antes de salir... como liberar memoria.

Código (cpp) [Seleccionar]

void func( int numero )
{
  char* buffer = new buffer[ 10 ];

  // ...

  if ( numero < 0 )
    return;

// ...

  delete buffer;
}


Ejemplos similares a este me he encontrado a patadas.

No obstante también digo que funciones con muchos niveles, si con returns mejora muchísimo la claridad... ahí me pienso si poner o no returns :)

amchacon

A mí me gustan los returns, una forma fácil y eficiente de acabar una función.

Solo tienes que tener cuidado de liberar la memoria  ;)
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

satu

Buenas!!

Claro, si para gustos....

El caso es que de ambos modos está bien, es cuestión de manías o necesidades jeje

Saludetes
Breakbeat como forma de vida

eferion

Cita de: amchacon en 28 Junio 2013, 11:21 AM
A mí me gustan los returns, una forma fácil y eficiente de acabar una función.

Solo tienes que tener cuidado de liberar la memoria  ;)

Mi caso es un poco extremo... pero en un proyecto como en el que estoy... de 13 millones de líneas de código... y 70 personas picando código... acabas detestando un poco los returns a mitad de función.

No es por el que lo hace... sino por el que luego va a meter mano ahí.

Pero es cierto, es cuestión de gustos.

amchacon

Cita de: eferion en 28 Junio 2013, 11:38 AM
Mi caso es un poco extremo... pero en un proyecto como en el que estoy... de 13 millones de líneas de código... y 70 personas picando código... acabas detestando un poco los returns a mitad de función.

No es por el que lo hace... sino por el que luego va a meter mano ahí.

Pero es cierto, es cuestión de gustos.
¿Estas desarrollando un linux? Que barbaridad  ;-)

Pues la verdad esque nunca he tenido que trabajar en equipo, aunque en realidad todo se resuelve con unas buenas notaciones.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar