我正在尝试制作一个可以接受任何键值类型的节点。到目前为止,当我使用它一次时它可以工作,但是当我再次使用它时,我得到了错误。
以下是我编写的代码:
map.h
:
#ifndef Data_Structures_map_h
#define Data_Structures_map_h
#include <stdio.h>
#include <stdlib.h>
#define node(key_t, value_t) \
typedef struct node { \
key_t key; \
value_t value; \
} node
#endif /* Data_Structures_map_h */
main.c
:
#include <stdio.h>
#include "map.h"
int main(int argc, const char * argv[]) {
node(char*, int);
node* n = malloc(sizeof(node*));
n->key = "first";
n->value = 1;
printf("the node n has a key of %s and a value of %d.\n", n->key, n->value);
// error starts from here
node(char, char*);
node* n2 = malloc(sizeof(node*));
n2->key = 'a';
n2->value = "first";
printf("the node n2 has a key of %c and value of %s.\n", n2->key, n2->value);
return 0;
}
我应该怎么做才能让它工作?
编辑:
错误是Redefinition of 'node'
,其余的是警告。我正在使用 Xcode。