Use code blocks please.
Are you including serial.h twice in the same code?
For example if you include serial.h and foo.h, and foo.h itself includes serial.h, then the answer to this question is yes.
A common solution to multiple includes is to add something along the following lines:
// serial.h contents
Then when you include serial.h the first time, _SERIAL_H_ isn't defined, #ifndef evaluates TRUE and _SERIAL_H_ is defined. The second time serial.h is referenced the #ifndef evaluates FALSE and you don't get duplicate definitions.