2016-02-10 18 views
0

Я пытаюсь использовать * .h именованные структуры в других файлах, таких как clube.c, которые будут создавать массив из структуры, определенной как Clubes.Как использовать структуру из другого файла?

structures.h:

extern typedef struct Clubes{ 
char *codClube; 
char *nome; 
char *estadio; 
}; 

независимо от того, что я делаю это просто не появляется в моем clubes.c

Примечание: уже сделал включить "structures.h"

Еще раз спасибо заранее, , и если у вас есть любая информация, которую я могу вам дать, чтобы помочь вам, просто спросите.

+1

Ключевое слово 'extern' перед' typedef' не имеет смысла. Чего вы пытаетесь достичь? –

+0

Только то, что я сказал раньше. Создайте структуру в файле и переменную массива, используя эту структуру в другом файле. –

+0

Удалите ключевое слово 'extern' и включите' структуры.h' в ваш c. файл. Это все. –

ответ

2

Ключевое слово typedef только позволяет определить тип, например, typedef int whole_number это создаст тип whole_number и теперь вы можете использовать его, как вы бы использовать int, whole_number x = 5; То же самое и со структурами. Люди используют ЬурейеЕ на структурах, поэтому они не должны писать struct Clubes:

typedef struct Clubes{ 
char *codClube; 
char *nome; 
char *estadio; 
} clubes; 

И теперь вы не должны использовать struct Clubes x;, вы можете использовать clubes x;, который короче и легче писать.

Extern ключевое слово дает вам глобальную связь, и в этом случае оно ничего не делает.

Ваш вопрос немного запутанный. Если вы хотите создать эту структуру, а затем использовать его в другие файлы, вам нужно создать файл заголовка:

#ifndef __CLUBES_H_ 
#define __CLUBES_H_ 1 

struct Clubes{ 
char *codClube; 
char *nome; 
char *estadio; 
} clubes; 

#endif 

Сохранить это в одном заголовке файла, например clubes.h, а затем в какой-то другой c коде, где вы хотите используйте эту структуру, вы просто включаете заголовок с #include "clubes.h"

0

Идеальное использование заголовочных файлов

/* put this in clube.h */ 
struct Clubes{ 
char *codClube; 
char *nome; 
char *estadio; 
}; 

/* put this in clube.c */ 
#include "clube.h" 

struct Clubes myarray[5]; 
0

Я думаю, ты путаешь, что некоторые из этих ключевых слов сделать.

struct создает новый тип. Это не создает никаких экземпляров типа.

extern предназначен для обеспечения связи для глобальной переменной.

typedef присваивает новое глобальное имя существующему типу.

/* clube.h */ 

/* define and declare the Clubes struct */ 
struct Clubes { 
    char* codClube; 
    char* nome; 
    char* estadio; 
} 

/* typedef the Clubes struct. 
* Now you can say struct Clubes or Clubes_t in your code. 
*/ 
typedef struct Clubes Clubes_t; 

/* Now you've created global linkage for my_clubes. 
* I.e. two cpp files could both modify it 
*/ 
extern struct Clubes my_clubes[2]; 



/* clube.c */ 

#include "clube.h" 

/* Now you've got storage for my_clubes */ 
Clubes_t my_clubes[2]; 


/* some_other.c */ 

#include "clube.h" 

void fun() { 
    my_clubes[0].codClube = "foo"; 
    /* etc... */ 
} 
+0

Это то, что я ищу.И я уже дошел до этого, но проблема в том, что я хочу, чтобы размер массива был числом строк, к которому я должен получить доступ. –