Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 1999
    Messaggi
    88

    [C] usare una macro per far riferimento ad un define

    Saluti a tutti!
    Io ho un sacco di funzioni che usano delle costanti dichiarate con dei define.
    Molte costani variano per un solo carattere (es. pluto1_pippo, pluto2_pippo).
    Vorrei poter variare quel carattere solo in un punto e farlo variare automaticamente in tutti i riferimenti.

    Esempio:

    #define NUM 1
    #define pluto1_pippo (*(unsigned int*) 0x400021)
    #define pluto2_pippo (*(unsigned int*) 0x400025)


    void mia funz(.....){
    pluto1_pippo=0x55; // Voglio variare pluto variando NUM
    }

    Grazie
    Paolo
    VB - Java - C/C++ - VC - CORBA -JDBC

  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    In questi casi è necessario utilizzare delle variabili.

  3. #3
    codice:
    #define pluto_pippo( parametro ) ( ti_comporti_a_seconda_del_parametro )

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 1999
    Messaggi
    88

    Ho risolto

    Grazie iguana13,
    ma ho risolto con le macro (mi ricordavo che si poteva fare, ma no come). Durante la pausa pranzo sono andato a casa e ho preso il libro del C.

    Basta usare il ## per concatenare senza spazi gli argomenti :tongue:

    Ciao
    Paolo
    VB - Java - C/C++ - VC - CORBA -JDBC

  5. #5
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Allora no ho capito bene o non ti sei spiegato bene... i concatenamenti li so usare ma non capisco come in questo caso... :master:

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 1999
    Messaggi
    88

    .

    Allora vediamo se rieso ad essere più chiaro,
    nel mio caso specifico ho diversi file di costanti(che contengono la locazione di memoria di alcuni registri di un processore).
    Io volevo creare delle macro da usare in delle mie funzioni, per poter variare ad esempio quale porta seriale usare.
    Siccome tutte le costanti della seriale sono uguali a parte il numero della porta, avevo bisogno di un modo per variare solo in un punto quale porta usare e non andare a cambiare in tutto il codice le costanti.

    #define SCI1_SCR .......
    #define SCI2_SCR ........
    #define SCI2_CRR ........

    #define SER(arg) SCI1_ ## arg // nel caso voglio usare la 1


    Nelle mie librerie faccio riferimento alla macro così cambiando il valore SCIX nella macro automaticamente cambio porta.


    Spero di essere stato chiaro

    Paolo
    VB - Java - C/C++ - VC - CORBA -JDBC

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.