Я совершенно новый для C. Я пробовал другие ссылки, но не кости
Я использую Xcode 6.1, и я получаю следующие вопросы:.Получение Прогнозного идентификатора или «(» выпуска в Xcode 6.1
Анализировать Выпуск: Ожидаемый идентификатор или '('
Семантический Проблема: Неожиданное имя типа 'карта'
Вот мой код:
//hashmap.h
#ifndef __HashMap__hashmap__
#define __HashMap__hashmap__
void map_init();
void map_insert(uint8_t, uint8_t);
uint8_t map_getVal(uint8_t);
#endif /* defined(__HashMap__hashmap__) */
//hashmap.c
#include <stdint.h>
#include "hashmap.h"
#define KEY_NOT_FOUND -1
static int i = 0;
typedef struct HashMap {
uint8_t KEY;
uint8_t VAL;
} *map;
void map_init() {
map = (HashMap*) calloc(1, sizeof(HashMap)); //Parse Issue
}
void map_insert(uint8_t key, uint8_t val) {
int size;
map[i].KEY = key; //Parse Issue
map[i].VAL = val; //Parse Issue
i++;
size = i + 1;
map = (HashMap*) realloc(map, size * sizeof(HashMap)); //Parse Issue
}
int map_search(HashMap map[], uint8_t key) {
int index, size = i;
for(index = 0; index <= size; index++)
if(map[index].KEY == key)
return index;
return KEY_NOT_FOUND;
}
uint8_t map_getVal(uint8_t key) {
return map[map_search(map, key)].VAL; //Semantic Issue
}
Я попытался заменить карты [I] с обозначениями массива указателя (картой + I) дает тот же результат. Также не стесняйтесь указать, как мой хэш-план будет проваливаться после устранения проблем.
Ваш HashMap будет флоп, потому что это не HashMap. – erip
Ваша «карта» - это тип. –
вы не указали переменную map в 'map_insert'' map_getVal'. в карте «map_init» выделяется, но не возвращается, вы ее не сохранили. Вы можете либо сделать «map» статической переменной, либо сохранить значение и передать «map» для каждого вызова функции, как и то, что вы сделали с «map_search» – vincentleest