En lo que respecta a C, ¿qué es una rutina de código auxiliar? También un ejemplo sería muy apreciado también.¿Qué es una rutina de stubs?
Respuesta
Una rutina de stub puede ser una de (al menos) dos cosas.
primer lugar, puede ser una rutina lugar-titular de la cual se desarrolla rápidamente para poner a prueba una rutina de nivel superior, con la intención de sustituir una versión real más adelante. Esto se utiliza normalmente con el desarrollo de arriba hacia abajo (codificación de los niveles más altos primero y luego su forma de trabajo hasta las cosas más detallada) y puede ser tan simple como:
int getCount (void) { return 7; } // just return fixed value for testing.
o un poco más complejo:
// Cycle through values for some variety.
int getCount (void) {
int retvals[] = {2,7,1,8,2,8,1,8,2,8,4,5,9};
static int pos = -1;
pos = (pos + 1) % (sizeof (retvals)/sizeof (*retvals));
return retvals[pos];
}
por supuesto, una vez que el talón consigue bastante compleja, es posible que también acaba de poner en práctica la cosa real :-)
en segundo lugar, se utiliza comúnmente en la llamada a procedimiento remoto biente (RPC) ents. Un talón se utiliza para ordenar los datos en un extremo y comunicarlos a un servidor en el otro extremo.
RPC necesita crear funciones auxiliares para el cliente y un servidor. Es muy similar a un prototipo de función en C, pero el resultado final es un poco diferente, como por ejemplo:
+----------------+
| Client |
| +----------+ | +---------------+
| | main | | | Server |
| |----------| | | +----------+ |
| | stub_cli |------->| stub_svr | |
| +----------+ | | |----------| |
+----------------+ | | function | |
| +----------+ |
+---------------+
En este ejemplo, en lugar de llamar function
en el mismo programa main
, llama a una función de resguardo del cliente (con el mismo prototipo como function
) que es responsable de empaquetar la información y pasarla a otro proceso. Esta puede ser la misma máquina o una máquina diferente, realmente no importa: una de las ventajas de RPC es poder mover los servidores a voluntad.
En el servidor, hay un proceso de "escucha" que recibirá esa información y la pasará al servidor. El código auxiliar del servidor recibe la información, la desempaqueta y la pasa a la función real.
La función real hace lo que necesita y regresa al código auxiliar del servidor que puede empaquetar la información de retorno y devolverla al talón del cliente.
El apéndice del cliente lo descomprime y lo devuelve al main
.
Es una función con la misma firma que la función real, pero no hace nada, y puede compilarse y ejecutarse exactamente como en la realidad. p.ej.
int MyStub(char * str)
{
/* Stub - Does Nothing */
return 0;
}
A menudo se utilizan como marcadores de posición, para que la estructura general del programa se pueda resolver primero, y luego los detalles.
En lenguaje C, el código auxiliar en realidad llama al main(), no al sistema operativo ni al compilador.
¿Quisiste decir? Código de inicio? No he escuchado que se use el código auxiliar en ese contexto. – paxdiablo
- 1. ¿Qué sucede en una rutina de servicio de interrupción?
- 2. Mocks and Stubs
- 3. Rutina de rebote simple
- 4. Problema de rutina SetConsoleCtrlHandler
- 5. ¿Qué pasa con los Stubs para las pruebas unitarias?
- 6. ¿Cuándo usar stubs y mocks?
- 7. PHPUnit: varios stubs de la misma clase
- 8. Devolver la llamada de rutina
- 9. Generando stubs de JavaScript de WSDL
- 10. rutina SQLite drop column
- 11. Restricciones mientras kernel está ejecutando una rutina ISR
- 12. Generar stubs con jax-ws falla
- 13. rutina de diferencia de lista de Prolog
- 14. longitud de nombre de rutina en fortran90
- 15. Llamada de rutina de parche en delphi
- 16. ¿Qué métodos existen para generar automáticamente stubs de clientes java a partir de archivos WSDL?
- 17. Rutina de recepción correspondiente de MPI_Bcast
- 18. ¿Cómo puedo saber si se hace una rutina, sin bloquear?
- 19. Python quicksort - Lista de comprensión vs Recursion (rutina de partición)
- 20. ¿Qué tan estable es NSubstitute?
- 21. SQLite3 - rutina de biblioteca llamada fuera de secuencia
- 22. "Rutina de biblioteca llamada fuera de secuencia" sqlite3_prepare_v2 (CREATE TABLE)
- 23. Objetivo-c rutina principal, lo que es: int argc, const char * argv []
- 24. ¿Cómo generar automáticamente stubs para protocolos en XCode 4.2?
- 25. C# pasar una colección de objetos InterfaceImplementingClass a una rutina que lleva una colección de interfaz .NET objetos
- 26. ¿Qué es y qué no es una historia de usuario?
- 27. ¿Cómo optimizar la rutina de carga con Delphi 2010?
- 28. ¿Qué es una proyección?
- 29. ¿Qué es una unión?
- 30. ¿Qué es una corriente?
Respuesta impresionante, gracias a un grupo :) –