The keyword far is a synonym for __far, which is not allowed when the -Ansi: Strict ANSI compiler option is present.
A __far pointer allows access to the whole memory range supported by the processor, not just to the default data page. Use it to access memory-mapped I/O registers not located on the data page. You can also use it to allocate constant strings in a ROM not on the data page.
The __far keyword defines the calling convention for a function. Some backends support special calling conventions which also set a page register when a function is called. This enables you to use more code than the address space can usually accommodate. The special allocation of such functions is not done automatically.
The topics covered here are as follows: