任意のキー値タイプを受け入れることができるノードを作成しようとしています。今のところ一度使うと動くのですが、もう一度使うとエラーが出ます。
以下は私が書いたコードです:
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を使用しています。