Well, that book contradicts the C99 standard which says that identifiers with leading underscore are reserved for file scope. (in other words, if it starts with underscore and lowercase letter, it should only be seen within one file, not shared between files via a header) I also found this stack overflow post with a summary from several different versions of the standard.