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