GNU Coding Standards

The GNU coding standards are a set of rules and guidelines for writing programs that work consistently within the GNU system. The standards document is part of the GNU Project and is available from the GNU website [http://www.gnu.org/prep/standards/] . Though it focuses on writing free software for GNU in C, much of it can be applied more generally. In particular, the GNU Project encourages its contributors to always try to follow the standards—whether or not their programs are implemented in C. The C code formatting style is well-known within the free software community, but of course anyone can choose to follow it.

Code formatting

The GNU coding standards specify exactly how to format most C programming language constructs. Here is a characteristic example:

intmain (int argc, char *argv [] ){ struct gizmo foo;

fetch_gizmo (&foo, argv [1] );

check: if (foo.type = MOOMIN) puts ("It's a moomin."); else if (foo.bar < GIZMO_SNUFKIN_THRESHOLD / 2
| (strcmp (foo.class_name, "snufkin") = 0) && foo.bar < GIZMO_SNUFKIN_THRESHOLD) puts ("It's a snufkin."); else { char *barney; /* Pointer to the first character after the last slash in the file name. */ int wilma; /* Approximate size of the universe. */ int fred; /* Max value of the `bar' field. */

do { frobnicate (&foo, GIZMO_SNUFKIN_THRESHOLD, &barney, &wilma, &fred); twiddle (&foo, barney, wilma + fred); } while (foo.bar >= GIZMO_SNUFKIN_THRESHOLD);

store_size (wilma);

goto check; }

return 0;}

The consistent treatment of blocks as statements (for the purpose of indentation) is a very distinctive feature of the GNU C code formatting style; as is the mandatory space before parentheses. All code formatted in the GNU style has the property that each closing brace, bracket or parenthesis appears "to the right" of its corresponding opening delimiter, or in the same column.

As a general principle, GNU Emacs can be considered a reliable authority on the GNU code formatting style. As such, it is desirable that any piece of code that looks ugly when indented by Emacs is changed into a more Emacs-friendly form—for example, by inserting additional parentheses.

Comments

The standards greatly emphasise the importance of English language comments:

Please write the comments in a GNU program in English, because English is the one language that nearly all programmers in all countries can read. If you do not write English well, please write comments in English as well as you can, then ask other people to help rewrite them. If you can't write comments in English, please find someone to work with you and translate your comments into English.

Comments should consist of complete, capitalized sentences, each followed by two spaces (so that Emacs can tell where one sentence ends and the next begins).

For long or complex preprocessor conditionals, every #else and #endif should have a comment explaining the condition for the code below (for #else) or above (for #endif).

Files

The standards require that all programs be able to operate when /usr and /etc are mounted read-only. Therefore, files that are modified for internal purposes (log files, lock files, temporary files, etc.) should not be stored in either /usr or /etc. An exception is made for programs whose job it is to update system configuration files in /etc. Another exception is made for storing files in a directory when the user has explicitly asked to modify a file in the same directory.

Portability

The GNU coding standards define the issue of portability in this way: portability in the Unix world means 'between Unixes'; in a GNU program this kind of portability is desirable, but not vitally important.

According to the standard, portability problems are very limited as GNU programs are designed to be compiled with one compiler, the GNU C Compiler, and only run on one system, which is the GNU system.

There is one form of portability problem though, and that is the fact that the standard makes it clear that a program should run on different CPU types. The standard says that GNU doesn't and won't support 16-bit systems, but handling all the different 32- and 64-bit systems is absolutely necessary.

See also

*Gnits Standards

External links

* [http://www.gnu.org/prep/standards.html The GNU Coding Standards] on the GNU website
* [http://www.ronancrowley.com/Eclipse_GNU_Style.xml Eclipse Code Style Formatter for GNU Coding Standards]


Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Coding standards — Als Programmierstil (engl. code conventions, coding conventions, coding standards) bezeichnet man einen Satz von Regeln, denen sich der Programmierer unterwirft. Üblicherweise werden hierunter Regeln verstanden, nach denen der Quelltext einer… …   Deutsch Wikipedia

  • Coding conventions — are a set of guidelines for a specific programming language that recommend programming style, practices and methods for each aspect of a piece program written in this language. These conventions usually cover file organization, indentation,… …   Wikipedia

  • GNU build system — GNU logo The GNU build system, also known as the Autotools, is a suite of programming tools designed to assist in making source code packages portable to many Unix like systems. It can be difficult to make a software program portable: the C… …   Wikipedia

  • GNU Automake — est un logiciel générant des makefiles portables qui peuvent être utilisés par make pour compiler des programmes. C est un logiciel libre développé et maintenu par le projet GNU et utilisé dans le processus de compilation du système GNU. Les… …   Wikipédia en Français

  • GNU Libtool — Développeur Projet GNU Dernière version …   Wikipédia en Français

  • Coding Convention — Als Programmierstil (engl. code conventions, coding conventions, coding standards) bezeichnet man einen Satz von Regeln, denen sich der Programmierer unterwirft. Üblicherweise werden hierunter Regeln verstanden, nach denen der Quelltext einer… …   Deutsch Wikipedia

  • Coding Style — Als Programmierstil (engl. code conventions, coding conventions, coding standards) bezeichnet man einen Satz von Regeln, denen sich der Programmierer unterwirft. Üblicherweise werden hierunter Regeln verstanden, nach denen der Quelltext einer… …   Deutsch Wikipedia

  • GNU Autotools — Programmablaufplan von autoconf und automake, zwei Tools im GNU Build System Das GNU Build System, auch bekannt als Autotools, ist eine Sammlung von Tools für die Computerprogrammierung, die vom GNU Projekt entwickelt wurden. Diese Tools sind für …   Deutsch Wikipedia

  • GNU Build System — Programmablaufplan von autoconf und automake, zwei Tools im GNU Build System Das GNU Build System, auch bekannt als Autotools, ist eine Sammlung von Tools für die Computerprogrammierung, die vom GNU Projekt entwickelt wurden. Diese Tools sind für …   Deutsch Wikipedia

  • GNU build system — Se ha sugerido que este artículo o sección sea fusionado con Sistema de construcción para GNU (discusión). Una vez que hayas realizado la fusión de artículos, pide la fusión de historiales aquí. El GNU build system conocido también como Autotools …   Wikipedia Español


Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.