Importante: Consulte esta pregunta muy relacionada: Return multiple values in C++.Devolver múltiples valores desde una función C
¿Cómo hago lo mismo en ANSI C? ¿Usarías una estructura o pasarías las direcciones de los params en la función? Busco un código extremadamente eficiente (rápido) (tiempo y espacio), incluso a costa de la legibilidad.
EDIT: Gracias por todas las respuestas. Ok, creo que debo alguna explicación: estoy escribiendo este libro sobre un cierto subconjunto de algoritmos para un dominio en particular. Me he marcado el objetivo bastante arbitrario de hacer que las implementaciones más eficientes (tiempo y espacio) para todos mis algos se coloquen en la web, a costa de la legibilidad y otras cosas. Esa es en parte la naturaleza de mi pregunta (general).
respuesta: espero aclarar esto, a partir de (posiblemente) más rápido a más de sentido común (todo esto a priori, es decir, sin pruebas):
- outvalues en tienda a objeto global (I asumiría algo así como outvals [2]?), o
- outvalues pasar como parametros en la función (foo (int en, int * OUT1, int * OUT2)), o
- retorno una estructura con dos outvals, o
- (3) solo si los valores están semánticamente relacionados.
¿Tiene esto sentido? Si es así, creo que la respuesta de Jason es la más cercana, a pesar de que todos proporcionan alguna pieza del "rompecabezas". Robert está bien, pero en este momento la semántica no es lo que busco (aunque su consejo está debidamente anotado)
Gracias a todos.
Escriba su código y perfil despiadadamente. Creo que encontrará que el impacto en el rendimiento de struct-vs-reference es * tan minúsculo * en comparación con el resto de su implementación, que ni siquiera vale la pena tenerlo en cuenta. –
Este es un buen consejo también. Gracias. (Por cierto, te suscribí, sucede que estaba buscando una respuesta mucho más práctica, eso es todo.) –
Lo sé. Gracias. –