What are the most common naming conventions in C?
What are the naming conventions commonly use in C? I know there are at least two:
- GNU / linux / K&R with lower_case_functions
- ? name ? with UpperCaseFoo functions
I am talking about C only here. Most of our projects are small embedded systems in which we use C.
Here is the one I am planning on using for my next project:
C Naming Convention
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)
The most important thing here is consistency. That said, I follow the GTK+ coding convention, which can be summarized as follows:
- All macros and constants in caps:
MAX_BUFFER_SIZE
,TRACKING_ID_PREFIX
. - Struct names and typedef's in camelcase:
GtkWidget
,TrackingOrder
. - Functions that operate on structs: classic C style:
gtk_widget_show()
,tracking_order_process()
. - Pointers: nothing fancy here:
GtkWidget *foo
,TrackingOrder *bar
. - Global variables: just don't use global variables. They are evil.
- Functions that are there, but
shouldn't be called directly, or have
obscure uses, or whatever: one or more
underscores at the beginning:
_refrobnicate_data_tables()
,_destroy_cache()
.
"Struct pointers" aren't entities that need a naming convention clause to cover them. They're just struct WhatEver *
. DON'T hide the fact that there is a pointer involved with a clever and "obvious" typedef. It serves no purpose, is longer to type, and destroys the balance between declaration and access.