wskażnik na const char far

0

Witam

Mam problem z następującą definicją wskaźnika:

/* USB address pointer */
const char far *usb_data_address = (char far *)0x029000ul;

Wskaźnik ten używany jest dalej tak:

#pragma INTERRUPT usb_receive_isr
void usb_receive_isr(void)
{
    /* Set the Interface to USB connection with PC */
    if ((if_state.connection_to_pc == PC_CONN_NONE))
        if_state.connection_to_pc = PC_CONN_USB;

    /* Handle the received byte */
    if (if_state.connection_to_pc == PC_CONN_USB)
        rs232_process_received_byte(*usb_data_address);
}

Natomiast funkcja która tutaj jest wołana ma taki prototyp:

void rs232_process_received_byte(register uint8_t read_char);

Czy ktoś może mi jasno wytłumaczyć po co stosuje się słówko "far" w definicji wskaźnika ?

0

Jaki system, jaka architektura?

Na zwykłych architekturach far i near nic nie znaczą, ale na niektórych egzotycznych jest to inny rodzaj wskaźnika i nie można ich mieszać.

W podanym wyżej przykładzie w wywołaniu funkcji masz dereferencję wskaźnika, a funkcja przyjmuje po prostu uint8_t a nie wskaźnik - far czy nie far.

0

W podanym wyżej przykładzie w wywołaniu funkcji masz dereferencję wskaźnika, a funkcja przyjmuje po prostu uint8_t a nie wskaźnik.

... no tak miało chyba być bo funkcja przyjmująca uint8_t jest wołana właśnie z parametrem jako dereferencja tego wskaźnika, czyli typ char.

System : tester diagnostyczny
Architektura: 32 bit
Procesor : M16C renesasa

1 użytkowników online, w tym zalogowanych: 0, gości: 1