C Language and Libraries Help (clang.hlp) (Table of Contents; Topic list)
__far
                                             Up Contents Index Back
─────C/C++ Language─────────────────────────────────────────────────────────
 
  Keyword:   __far
 
  Syntax:    type __far declarator
             class __far class-name
             class __far class-name func()
             type member-func() __far
 
  Summary:   Specifies that a data object can reside anywhere in
             memory and is not assumed to reside in the default data
             segment. Specifies that a function can be called by other
             functions anywhere in memory, and not only by those in the
             same code segment. Functions and data are referenced with
             32-bit addresses, and pointers declared as __far are
             32-bit values.
 
  See also:  __based, __huge, __near
             Memory Models
 
     The __far keyword can be used to modify data objects, pointers,
     functions, classes, the this pointer of member functions, and the
     addressing mode of objects returned by functions.
 
     If the /Zc compiler switch is used, both far and _far are
     synonyms for __far. If /Za is used, only __far is accepted.
 
     NOTE: Do not use __far in a 32-bit program.
 
     Data Objects or Pointers
 
     A far data object can reside anywhere in memory.
 
     A far pointer is a 32-bit address value that provides access to
     data in any segment.
 
     For example:
 
          char __far a;                 // Far character
          char __far *fp;               // Far pointer
 
     The Calling Convention of Functions
 
     A far function can be called by functions in any code segment. A
     pointer to a far function is a 32-bit value.
 
     For example:
 
          char __far redraw();
 
     Classes
 
     Objects of a far class can reside anywhere in memory, unless an
     overriding keyword appears in the individual declaration.
     Structure or union types also can be declared as __far.
 
     For example:
 
          class __far Node
          {
             // ...
          };
 
          Node my_node;              // Far by default
          Node __near your_node;     // Explicitly declared __near
 
     Member Functions
 
     You can overload a member function to operate on far objects
     if objects of the class are not far by default. Within the
     function, the this pointer is a far pointer.
 
     For example:
 
          class Node
          {
          public:
             void print() __far;     // Called for far objects
             void print();           // Called for default objects
          private:
             // ...
          };
 
     The Addressing Mode of Return Objects
 
     You can specify that a function return a far object. This is
     useful if you call a member function for the temporary object
     returned by the function.
 
     For example:
 
          class __far Node make_node(); // Function returns a far Node
 
          make_node().print();     // Call far print() for temporary
                                   //     object
                                    -♦-