2009-07-26 8 views
0

J'ai créé un wrapper pour la fonction strncpy.Où mettre un code réutilisable

Je vais devoir l'utiliser dans mon projet qui contient de nombreux en-têtes et fichiers sources (environ 20 tous ensemble). Et cette enveloppe sera utilisée dans la plupart d'entre eux. Comme le code est très court, je me demande où est la meilleure façon de mettre en œuvre cette enveloppe dans mon projet?

Je pense que cela pourrait être utile d'avoir ceci dans un en-tête appelé utilities.h. Et inclure cet en-tête dans chaque fichier source qui en a besoin?

Et peut-être aussi de futurs projets? Je suis nouveau au programme C, alors je cherche juste de bons conseils sur ce problème.

Un grand merci,

/* Null terminate a string after coping */ 
char* strncpy_wrapper(char *dest, const char* source, 
         const size_t dest_size) 
{ 
    strncpy(dest, source, dest_size); 
    /* 
    * If the destination is greater than zero terminate with a null. 
    */ 
    if(dest_size > 0) 
    { 
     dest[dest_size - 1] = '\0'; 
    } 

    return dest; 
} 

Répondre

3

L'utilisation d'un en-tête est une bonne idée. Je vous suggère de mettre un «garde» autour d'elle. Quelque chose comme:

#ifndef UTILITIES_H 
#define UTILITIES_H 

//definitions here 

#endif //UTILITIES_H 
+0

Juste une question rapide. Comme c'est juste une fonction qui est petite. Dois-je en-tête (utilities.h) avec la déclaration de ma fonction et un fichier source (utilities.c) pour la définition? – ant2009

+1

Habituellement, vous mettez le code dans un fichier .c et la déclaration (signature de la fonction) dans le fichier .h. De cette façon, vous n'avez pas besoin d'expédier le code source (le code compilé est suffisant). Pour une petite fonction, c'est bizarre, mais lorsque les projets se développent, vous ne compilez que ce qui est nécessaire et pas tous les fichiers source, ce qui peut augmenter considérablement le temps de compilation. – Burkhard

1

Je pense que vous vous dirigez vers le droit chemin. Il est assez courant de construire une bibliothèque avec des fonctions communes qui peuvent être incluses si nécessaire. Vous les trouverez fréquemment avec des noms tels que Helper, Common ou comme vous l'avez suggéré Utilities.

2

Votre idée de le mettre dans un fichier utilities.h est pas mal. C'est une solution très courante. Mais assurez-vous qu'il n'y a pas de manière plus spécifique de catégoriser cette fonction dans votre application. Comme nous le savons tous - tout peut être étiqueté divers ce qui est exactement la signification d'un fichier utilities.h.

Questions connexes