Declaration of Functions

It is a special feature of the Arduino IDE that you can define functions after the point at which they are used without needing an explicit function prototype before hand. The Arduino build routine creates these prototypes but, unhappily, not always correctly, leading to errors which are not obvious. This is especially so if the function argument list contains user defined data types and the automatically created function prototype is placed before the declaration of that data type.