__far and typedef Names

If the array type has been defi ned as a typedef name, as in:

typedef int ARRAY[10];

then a __far parameter declaration is:

void my_func (ARRAY __far a);

The parameter is a __far pointer to the first element of the array. This is equal to:

void my_func (int *__far a);

It is also equal to the following direct declaration:

void my_func (int a[10] __far);

It is not the same as specifying a __far pointer to the array:

void my_func (ARRAY *__far a);

because a has type " __far pointer to ARRAY" instead of " __far pointer to int".