__far and Arrays

The __far keyword does not appear in the context of the * type constructor in the declaration of an array parameter, as shown:

  void my_func (char a[37]);  

Such a declaration specifies a pointer argument. This is equal to:

  void my_func (char *a);  

Use one of two possible methods when declaring such an argument to a __far pointer:

  void my_func (char a[37] __far);  

or alternately

  void my_func (char *__far a);  

In the context of the [ ] type constructor in a direct parameter declaration, the __far keyword always affects the first dimension of the array to its left. In the following declaration, parameter a has type "__far pointer to array of 5 __far pointers to char":

  void my_func (char *__far a[][5] __far);