#include #include "stringtable.h" struct stringnode{ hashcode_t key; cstring value; }; struct stringtable{ size_t dim; size_t numEntries; stringnode_ref *nodes; }; stringtable_ref new_stringtable(){ size_t index = 0; stringtable_ref sTable = malloc(sizeof(struct stringtable)); sTable->dim = 31; sTable->numEntries; sTable->nodes = malloc(31 * sizeof(struct stringnode)); for( index = 0; index < 31; index++ ){ sTable->nodes[index]->key = 0; sTable->nodes[index]->value = NULL; } return sTable; } #ifndef __STRINGTABLE_H__ #define __STRINGTABLE_H__ #include #include typedef char *cstring; typedef uint32_t hashcode_t; typedef stringtable *stringtable_ref; typedef stringnode *stringnode_ref; stringtable_ref new_stringtable(); #endif // __STRINGTABLE_H__ #include #include #include "stringtable.h" int main( int argc, char **argv ){ stringtable_ref table = new_stringtable(); return EXIT_SUCCESS; } gcc -g -O0 -Wall -Wextra -std=gnu99 -c stringtable.c gcc -g -O0 -Wall -Wextra -std=gnu99 -c oc.c gcc -g -O0 -Wall -Wextra -std=gnu99 -o oc stringtable.o oc.o sTable->nodes = malloc(31 * sizeof(struct stringnode)); for( index = 0; index < 31; index++ ){ sTable->nodes[index]->key = 0; sTable->nodes[index] = malloc(sizeof(*(sTable->nodes[index]))); struct stringtable{ size_t dim; size_t numEntries; stringnode_ref nodes; }; sTable->nodes[index].key = 0; sTable->nodes[index].value = NULL; #include typedef char *cstring; struct stringnode{ int key; cstring value; }; typedef struct stringnode *stringnode_ref; struct stringtable{ size_t dim; size_t numEntries; stringnode_ref nodes; }; typedef struct stringtable *stringtable_ref; stringtable_ref new_stringtable(){ size_t index = 0; stringtable_ref sTable = malloc(sizeof( *sTable ) ) ; sTable->dim = 31; sTable->nodes = malloc(31 * sizeof( *sTable->nodes ) ) ; for( index = 0; index < 31; index++ ){ sTable->nodes[index].key = 0; sTable->nodes[index].value = NULL; } return sTable; } int main(int argc, char *argv[]) { stringtable_ref table = new_stringtable(); exit( EXIT_SUCCESS ) ; } :~/tmp$ gcc -g -O0 -Wall -Wextra -std=gnu99 -c stringtable.c In file included from stringtable.c:2: stringtable.h:11: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token stringtable.h:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token stringtable.h:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘new_stringtable’ stringtable.c:12: error: expected specifier-qualifier-list before ‘stringnode_ref’ stringtable.c:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘new_stringtable’