Quels sont les plus communs des conventions de nommage en C?

Quelles sont les conventions de nommage utilisés pour le C? Je sais qu'il y a au moins deux:

  1. GNU /linux /K&R avec lower_case_functions
  2. ? nom ? avec UpperCaseFoo fonctions

Je parle C seulement ici. La plupart de nos projets sont de petits systèmes embarqués dans lequel nous utilisons C.

Ici est celui que je suis l'intention de l'utiliser pour mon prochain projet:


C Convention De Nommage

Struct              TitleCase
Struct Members      lower_case or lowerCase

Enum                ETitleCase
Enum Members        ALL_CAPS or lowerCase

Public functions    pfx_TitleCase (pfx = two or three letter module prefix)
Private functions   TitleCase
Trivial variables   i,x,n,f etc...
Local variables     lower_case or lowerCase
Global variables    g_lowerCase or g_lower_case (searchable by g_ prefix)
  • Je n'aurais pas la force d'un 'g_' préfixe des variables globales; je voudrais appliquer des noms significatifs (donc client_locale et pas cl_lc comme un nom de variable globale). Classique C ne pas utiliser de chameau cas; j'ai écrit le code en chameau dans C, et il semble bizarre (si je ne le fais pas comme ça plus). Cela dit, il n'est pas faux - et la consistance est plus important que la convention est utilisé. Éviter les typedefs qui intègrent la structure de pointeurs; tenir compte de la norme C - FICHIER ' * ' est orthographié ainsi, pas FILE_PTR.
  • Leffler, quoi de mal avec g_ pour signifier globals? Dans les systèmes embarqués, j'ai eu de la difficulté à avant où c'était dur pour traquer les inter-dépendances des modules à travers les variables globales et extern g_somevar. Personnellement, je pense que c'est généralement une mauvaise idée, mais ce genre de chose se fait pour des raisons de performances. Par exemple, un indicateur global qui est définie par une interruption indiquant que les données sont prêtes.
  • Pour ce que ça vaut, cette convention de nommage a surtout été arraché à partir de PalmOS, l'API conventions. Aussi, il est similaire à la convention utilisée dans O'Reilly livre: "la Programmation de Systèmes Embarqués avec des C et des Outils de Développement GNU". Personnellement, j'aime le TitleCase dans les noms de fonction. J'envisageais d'aller avec lowerCamelCase dans une liaison interne des fonctions (que j'ai appelé le privé dans ma question).
  • V - Le sarcastique réponse est "garder la trace des variables globales en notant qu'ils n'ont pas été définies comme des variables locales dans le corps de la fonction," mais je pense qu'il y a un certain mérite dans cette réponse. Si vous avez de nombreuses variables locales que vous ne pouvez pas dire que les variables sont locales et qui sont globales, votre fonction est probablement trop gros, et à moins que vous ayez une bonne raison de ne pas (espace/mémoire/de l'efficacité), vous devez briser.
  • Lutz, je suis d'accord, de tout mon cœur. Dans la mesure du possible vars doit être gardée à l'étendue la plus étroite. Notez qu'il existe en fait trois portées nous sommes à discuter: local à une fonction locale à un module (pas de externs de liaison de la variable) et les variables globales avec une liaison externe. Il est fréquent d'avoir le "global à un module de" variables dans les systèmes embarqués. Par conséquent, des précautions doivent être prises pour identifier les variables globales avec une liaison externe de sorte qu'ils peuvent être maintenus à un minimum et le module interactions compris. C'est là que le "g_" préfixe est utile.
  • Je suis d'accord avec l'utilisation de certains des g_ notation. Il est utile de savoir si quelque chose est visé est global ou quelque part d'autre.
  • J'aime préfixe variables globales //.
  • J'ai à peu près perdu quand j'ai lu votre commentaire, lol. Comme un vimmer préfèrent préfixe globals avec "ggVGd", car en général ils sont accompagnés par d'autres problèmes de conception.

InformationsquelleAutor JeffV | 2009-11-12