Question

En ce qui concerne C ce qui est une routine de talon? Aussi un exemple serait très apprécié aussi bien.

Était-ce utile?

La solution

Une routine de stub peut être l'une (au moins) deux choses.


Tout d'abord, il peut être une routine lieu-support qui vous développez rapidement pour tester une routine de niveau supérieur, avec l'intention de substituer une version réelle plus tard. Ceci est généralement utilisé avec haut vers le bas développement (coder le premier travail, votre plus hauts niveaux en bas à l'étoffe plus détaillée) et peut être aussi simple que:

int getCount (void) { return 7; } // just return fixed value for testing.

ou un peu plus complexe:

// 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];
}

Bien sûr, une fois que le talon devient assez complexe, vous pouvez aussi bien mettre en œuvre juste la vraie chose: -)


En second lieu, il est couramment utilisé dans des environnements appel de procédure distante (RPC). Une souche, il est utilisé pour le triage des données à une extrémité et communiquant à un serveur à l'autre extrémité.

RPC a besoin pour créer des fonctions pour le client stub et un serveur. Il est très similaire à un prototype de fonction en C, mais le résultat final est légèrement différent, par exemple:

+----------------+
| Client         |
|  +----------+  |  +---------------+
|  |   main   |  |  | Server        |
|  |----------|  |  |  +----------+ |
|  | stub_cli |------->| stub_svr | |
|  +----------+  |  |  |----------| |
+----------------+  |  | function | |
                    |  +----------+ |
                    +---------------+

Dans cet exemple, au lieu d'appeler function dans le même programme, main appelle une fonction stub client (avec le même prototype que function) qui est responsable de l'emballage l'information et l'obtenir à travers le fil à un autre processus. Cela peut être la même machine ou une autre machine, il ne compte pas vraiment -. L'un des avantages du RPC est d'être en mesure de déplacer des serveurs autour de la volonté

Dans le serveur, il y a un processus de « auditeur » qui recevra cette information et la transmettre au serveur. Le talon du serveur reçoit les informations, décompresse et il passe à la fonction réelle.

La fonction réelle fait alors ce qu'il doit et retourne au bout du serveur qui peut conditionner les informations de retour et de le transmettre vers le stub client.

Le stub client décompresse alors que et passe de nouveau à main.

Autres conseils

Il est une fonction avec la même signature que la fonction réelle, mais il ne fait rien, et peut être compilé et exécuté comme la vraie chose. par exemple.

int MyStub(char * str)
{
    /* Stub - Does Nothing */

    return 0;
}

Ils sont souvent utilisés comme des espaces réservés, de sorte que la structure globale du programme peut être élaboré d'abord, puis les détails.

Dans le langage C code Stub appeler réellement la main (), et non le système d'exploitation ou du compilateur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top