2013-05-05 4 views
0

Фон: Я создал Hashtable в файле hash_table.c. Вот часть того, что содержит мой файл заголовка hash_table.h:Проверьте, существует ли структура? [C]

/* hash_table.h */ 
#ifndef HASH_TABLE_H 
#define HASH_TABLE_H 

enum {BUCKET_COUNT = 1024}; 

struct Node { 
    char *key; 
    char *value; 
    struct Node *next; 
}; 

struct Table { 
    struct Node *array[BUCKET_COUNT]; 
}; 

struct Table *TableCreate(void); //creates the table 
.... 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ Я хочу инициировать Hashtable в другом файле C, называемом fdata.c. Я не знаю, что лучший способ сделать это, но вот что я подумал:

#include "hash_table.h" 
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

struct Table *t; //initiate the variable 

void testFunc() 
{ 
    if(Hashtable does not exist) { //How do I accomplish this? Is it possible? 
     t = TableCreate(); //create the table 
    else{ 
     continue... 
    .... 

Очевидно, что если есть лучший способ, чтобы начать эту таблицу я есть все уши. (Это мой первый раз, используя структуры с C)

Спасибо за поддержку!

ответ

1

Глобальный указатель будет инициализирован до nil при запуске приложения. Вы можете сравнить с nil, а затем позвонить TableCreate.

В качестве альтернативы вы можете просто создать таблицу при запуске. (например, от main или если вы на самом деле пишете Objective C, application:didFinishLaunchingWithOptions или что-то в этом роде.)

+0

В чем разница между использованием NULL и nil, потому что nil дает мне ошибку, в то время как NULL, похоже, работает. –

+0

Нет большой разницы в значении. Объект C использует nil, обычный C использует NULL. Оба они равны нулю. – StilesCrisis

+1

'nil' для объектов,' NULL' для не-объектов! См. [Этот ответ SO] (http://stackoverflow.com/questions/557582/null-vs-nil-in-objective-c) – HAS

Смежные вопросы