The GNU Coding Standards document the programming style used by the GNU Project. Its main purpose is to guide all volunteers in writing portable, robust, and reliable programs; and to provide GNU tools that behave consistently. The GNU coding standards only mention coding in one language, C.
Indentation
Here is one example of the indentation:
int main() { foo(bar); }
The basic level of indentation puts the curly brackets on one line, indenting them two spaces in. The statement(s) after the brackets are indented four spaces in.
Variable Declaration
Variables are declared each on one line, or two of the same sort on one line. The former is prefered in the GNU coding style.
Examples:
int foo; int bar;
OR
int foo, bar;
The method:
int foo, bar;
is not permitted under the guidlines.
Files (Temporary, Configuration and/or Backups)
The GNU coding standard tells where to save your temporary, configuration or backup files. It recommends to not assume that /etc or /usr are writeable. A program should have the ability to keep files somewhere else.
To this rule, there are two exceptions, one is that /etc is a place to hold system configuration information, the other is that if a user explicitly asks to store files in a directory, it is reasonable of the program to store the rest of the files 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 types, but handling all the different 32 and 64 bit types is absolutly neccessary.