I notice no-one mentioned argp. (I also notice one of autoopts's testimonials says that it (autoopts) is simpler than argp!). But from a quick look argp seems rather neat; it doesn't need a separate parser and code generator, and it's available in gnulib.
Why aren't I using it? -- http://rrt.sc3d.org