C Standard Library Wrapper Controleer de geretourneerde waarde van bibliotheekoproepen op fouten

  • Dylan Parker
  • 0
  • 4830
  • 716
> AUTEUR: Tobin Harding
Productie C-code moet altijd de geretourneerde waarde van bibliotheekoproepen op fouten controleren. Deze controles vereisen echter vaak dat dezelfde code herhaaldelijk wordt geschreven. Er zijn een aantal oplossingen voor dit probleem, waarvan dit er slechts één is. Bijvoorbeeld
 int foo (char * s) char * buf; if ((buf = malloc (strlen (s) + 1)) == NULL) / * fout * /… 
Vaak negeer je deze foutcondities liever, maar dit is de productiecode goed! Door een wrapper-functie te declareren void * Malloc (size_t size); en het definiëren
 void * Malloc (size_t size) void * ptr; if ((ptr = malloc (size)) == NULL) fprintf (stderr, "malloc error"); afsluiten (EXIT_FAILURE);  terugkeer (ptr);  
we kunnen deze functie dan gebruiken in onze code. Het bovenstaande codefragment kan nu worden geschreven als
 int foo (char * s) char * buf; buf = Malloc (strlen (s) + 1);… 
En we kunnen blij blijven dat we de foutconditie hebben gecontroleerd. Als de vereisten veranderen, is het gewoon een kwestie van de wrapper-functie bijwerken om het gedrag over het hele project te veranderen.
Succes.
Naamsvermelding:
Ik maakte kennis met de ideeën die hier door de tekst worden gepresenteerd UNIX-netwerkprogrammering - Stevens, Fenner en Rudoff



Niemand heeft nog op dit artikel gereageerd.

Een verzameling nuttige informatie over het Linux-besturingssysteem en nieuwe technologieën
Nieuwe artikelen, praktische tips, gedetailleerde recensies en handleidingen. Voel je thuis in de wereld van het Linux-besturingssysteem