Pytanie : Dlaczego ten sam oprogramowanie dla przelotny argument wartość w jeden platforma i adres w jeden?

W Platforma A, the funkcja argument być niepodpisany wartość.  W Estradowy B, the interfejs wymagać adres zamiast the value.

For the wysoki oprogramowanie warstwa który robić the funkcja wezwanie, the wymaganie być ten sam set kartoteka dla Platforma A i Estradowy B.  I tworzyć the następujący macro funkcja bieg w Platforma A dostawać the wartość i funkcja bieg w Estradowy B dostawać the adres:

#ifdef PLATFORM_B
#define KORYTKOWY & (cnfg->channel)
#else
#define KANAŁ cnfg->channel
#endif

Is tam  lepszy sposób ten macro?
Is tam  inny rozwiązanie oprócz the macro?


The wysoki warstwa oprogramowanie the funkcja wezwanie być podążać:

typedef pustka * channel_t;  /* w Estradowy B */
/* channel_t być niepodpisany w Platforma A */

void set_priority (channel_t kanał, niepodpisany wartość);

typedef struct cnfg_s   cnfg_t;

typedef struct pulseidc_cnfg_s
{
niepodpisany kanał;

};


void
some_init (work_t *work,
cnfg_t *cnfg
)
{

set_priority (KANAŁ, DIS_PRI);



Odpowiedź : Dlaczego ten sam oprogramowanie dla przelotny argument wartość w jeden platforma i adres w jeden?

>> I móc ten informacja ponieważ ono być zastrzeżony.

Teraz I rozumieć dlaczego ty być niechętny mój pytanie wyraźnie;)

Ponieważ I znać jaki API ty opowiadać wokoło, I mieć dosyć informacja ty. Ty musieć wewnątrz the API dokumentacja czy tam  być funkcja który nawracać channel_t wartość swój numeryk Id.

Coś lubić:

        int getChannelId (channel_t c) {
                /* the urzeczywistnienie tutaj być różny na oba platforma, ale od ty *
        }

W ten skrzynka, ty móc po prostu ten funkcja:

        jeżeli (
          (getChannelId (cnfg->channel) >= (0)) &&
          (getChannelId (cnfg->channel) <>        )
Inne rozwiązania  
 
programming4us programming4us