I know that function prototypes are useful for avoiding things like compilation errors, but are there any other good reasons to use function prototypes?