One aspect of C (or Delphi) I don't like is prototypes. In my humble opinion, programming languages should be there to make the programmer's life easier, and any work that the computer can do should be left to the computer. Take prototypes, for example. Why do we need them?
When I ask C programmers, the main argument seems to be "So the compiler knows the function definitions." My response to that has always been "Why can't it go through the source file twice then? Once to get the function defintions (from the function itself - fancy that), and the second time to do the compiling? Why should I have to write everything twice (and change everything twice if I change a function)?"