Важно помещать открывающую скобку, которая начинает тело функции на C в нулевой колонке, и избегать появления других открывающих или закрывающих скобок в нулевой колонке. Имеется несколько инструментов, которые просматривают исходный текст и ищую открывающую фигурную скобку в нулевой колонке для того, чтобы найти начало функции. Эти инструменты не будут работать с кодом, отформатированным без учета этого соглашения.
Так же важно, чтобы в описании функции ее имя начиналось в колонке ноль. Это помогает людям искать определение функции, и может так же помочь некоторым инструментам распознать его. Таким образом, правильное оформление описания функции следующее:
static char * concat (s1, s2) /* Name starts in column zero here */ char *s1, *s2; { /* Open brace in column zero here */ ... }
static char * concat (char *s1, char *s2) { ... }
int lots_of_args (int an_integer, long a_long, short a_short, double a_double, float a_float) ...
if (x < foo (y, z)) haha = bar[4] + 5; else { while (z) { haha += foo (z, z); z--; } return ++x + bar (); }
if (foo_this_is_long && bar > win (x, y, z) && remaining_condition)
mode = (inmode[j] == VOIDmode || GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j) ? outmode[j] : inmode[j]);
mode = ((inmode[j] == VOIDmode || (GET_MODE_SIZE (outmode[j]) > GET_MODE_SIZE (inmode[j]))) ? outmode[j] : inmode[j]);
v = rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000 + rup->ru_stime.tv_sec*1000 +rup->ru_stime.tv_usec/1000;
v = (rup->ru_utime.tv_sec*1000 + rup->ru_utime.tv_usec/1000 + rup->ru_stime.tv_sec*1000 +rup->ru_stime.tv_usec/1000);
do { a = foo (a); } while (a > 0);