1
當我的函數,我的散列是空的。爲什麼?爲什麼我的散列從函數返回時是空的?
這是我的代碼:
#include <stdio.h>
#include <string.h>
#include "uthash.h"
struct oid_struct {
char descr[20];
char oid[50];
UT_hash_handle hh;
};
testadd(struct oid_struct* oid_hash){
struct oid_struct *element;
element=(struct oid_struct*) malloc(sizeof(struct oid_struct));
strcpy(element->descr, "foo");
strcpy(element->oid, "1.2.1.34");
HASH_ADD_STR(oid_hash, descr, element);
printf("Hash has %d entries\n",HASH_COUNT(oid_hash));
}
main(){
struct oid_struct *oid_hash = NULL, *lookup;
testadd(oid_hash);
printf("Hash has %d entries\n",HASH_COUNT(oid_hash));
}
這裏是輸出:
# gcc hashtest.c
# ./a.out
Hash has 1 entries
Hash has 0 entries
#
你可以發佈'HASH_ADD_STR()'? – hmjd
它在http://uthash.sourceforge.net/ 中定義,我只是通過這裏提供的結構體來實現uthash。 – roegi