It is difficult to be specific without knowing the exact compiler to which you are referring.
However, many microcontroller have restrictions on how various regions of storage, both RAM and ROM, are accessed.
The Microchip C18 Compiler for example, in the case of functions/routines, requires their location, the function pointer, be located in within a 16-bit address range for small memory model "near" keyword and a 24-bit address range for large memory model "far" keyword. The default, neither keyword is specified, is the small memory model.
Reference: Microchip C18 C Compiler User's Guide, Section: 3.1 Memory Models, Page: 37
BigDog