/* Make the structure name match the typedef. */ typedef struct bar { int level; } BAR; typedef int foo; /* This is foo. */ typedef const long baz; /* This is baz. */ static char *function(int _arg, const char *_arg2, struct foo *_arg3, struct bar *_arg4); static void usage(void); /* * All major routines should have a comment briefly describing what * they do. The comment before the "main" routine should describe * what the program does. */ int main(int argc, char *argv[]) { char *ep; long num; int ch; while ((ch = getopt(argc, argv, "abNn:")) != -1) { switch (ch) /* Indent the switch. */ { case 'a': /* Don't indent the case. */ aflag = 1; /* Indent case body one tab. */ /* FALLTHROUGH */ case 'b': bflag = 1; break; case 'N': Nflag = 1; break; case 'n': num = strtol(optarg, &ep, 10); if ((num <= 0) || (*ep != '\0')) { warnx("illegal number, -n argument -- %s", optarg); usage(); } break; case '?': default: usage(); /* NOTREACHED */ } } argc -= optind; argv += optind; for (p = buf; *p != '\0'; ++p) { /* nothing */ } for ( ; ; ) { stmt; } for ( ; ; ) { zed = a + really + long + statement + that + needs + two + lines + gets + indented + four + spaces + on + the + second + and + subsequent + lines; } for ( ; ; ) { if (cond) { stmt; } } if (val != NULL) { val = realloc(val, newsize); } fcn_call(with, a, really, long, list, of, parameters, that, spans, two, lines); for ( ; cnt < 15; cnt++) { stmt1; stmt2; } almod = (chunk_is_single_line_comment(pc) && cpd.settings[UO_indent_relative_single_line_comments].b) ? ALMODE_KEEP_REL : ALMODE_KEEP_ABS; /* Indentation is an 8 character tab. Second level indents are four spaces. * If you have to wrap a long statement, put the operator at the end of the * line. */ while (cnt < 20 && this_variable_name_is_too_long && ep != NULL) { zappy = a + really + long + statement + that + needs + two + lines + gets + indented + four + spaces + on + the + second + and + subsequent + lines; } // Do not add whitespace at the end of a line, and only use tabs followed by // spaces to form the indentation. Do not use more spaces than a tab will // produce and do not use spaces in front of tabs. // // Closing and opening braces go on the same line as the else. Braces that // are not necessary may be left out. if (test) { stmt; } else if (bar) { stmt; stmt; } else{ stmt; } // No spaces after function names. Commas have a space after them. No spa- // ces after `(' or `[' or preceding `]' or `)' characters. error = function(a1, a2); if (error != 0) { exit(error); } // Unary operators do not require spaces, binary operators do. Do not use // parentheses unless they are required for precedence or unless the state- // ment is confusing without them. Remember that other people may confuse // easier than you. Do YOU understand the following? a = b->c[0] + ~d == (e || f) || g && h ? i : j >> 1; k = !(l & FLAGS); // Exits should be 0 on success, or 1 on failure. exit(0); /* * Avoid obvious comments such as * "Exit 0 on success." */ } static char * function(a1, a2, fl, a4) int a1, a2; /* Declare ints, too, don't default them. */ float fl; /* Beware double vs. float prototype differences. */ int a4; /* List in order declared. */ { }