Multiline-Macros



  • Ich würde gerne Macros in C erstellen, die aus mehreren Zeilen bestehen und Parameter haben. Das sieht bei mir ungefähr so aus:

    #define LINKEDLIST_DECL(TYPE) typedef struct { \
    struct TYPE_elem *next; \
    TYPE data; \
    } TYPE_elem; \
    \
    typedef struct { \
    TYPE_elem *first; \
    TYPE_elem *last; \
    } TYPE_list; \

    #define LINKEDLIST_IMPL(TYPE) TYPE_list create_TYPE_List(void) { \
    TYPE_list l_newList = {NULL,NULL}; \
    return l_newList; \
    } \
    void appendElementTo_TYPE_List(TYPE_list list,TYPE elem) { \
    TYPE_elem *l_newElem = malloc(sizeof(TYPE_elem)); \
    l_newElem->data = elem; \
    if (list.first == NULL) { \
    list.first = l_newElem; \
    list.last = l_newElem; \
    } else { \
    list.last->next = l_newElem; \
    list.last = l_newElem; \
    } \
    }

    aber leider findet keine Parameterersetzung statt, es wird immer z.B. appendElementTo_TYPE_List generiert egal wie der Parameter besetzt ist.
    Kann mir jemand sagen was ich hier falsch mache?



  • appendElementTo_##TYPE##_List benutzen

    und

    struct TYPE##_elem *next; \

    etc..



  • Das heißt dass ich immer wenn ich den Parameter in einem "Wort" verwende muss ich davor oder danach das ## einfügen, oder?



  • Ja, damit wird der Parameter mit den anderen Zeichen drumherum verbunden.



  • Danke für die Info, das hab ich wirklich nicht gewusst *g


Anmelden zum Antworten