A syntax error in my C18 program code
To use the USART library calls (OpenUSART and related flags), you'll need to #include the USART library header:

#include &lt;usart.h&gt;


You likely will also need the processor-specific #include, since the libraries support multiple flavours of parts and need a hint as to which hardware you're using: 

#include "p18f45k20.h"


You may have to explicitly define the paths to these headers if your C18 isn't cooperating.

Also, further to what Abdullah said, user functions like your init_USART should have a function prototype in your primary .h file to avoid having to explicitly structure your code in a specific sequence.

void init_USART(void);


UPDATE: The error is in putsUSART.

According to the library documenation, the call to putsUSART does not accept format specifiers like printf() and other standard I/O calls, it only accepts a pointer.



It appears that you need to sprintf() into a string buffer first, then call putsUSART on that buffer.