2013-02-08 1 views
0

Я написал несколько файлов: main.c, functions.c, functions2.c и header.h. Некоторые функции в функциях.c и functions2 используют мои перечисления и структуры.Объявления для перечислений и структур

Где я должен размещать свои перечисления и структуры? Как писать объявления для них в functions.c и functions2.c? Мои функции (из разных файлов) должны их видеть.

Например, я написал заявление такой функции в в header.h:

int func(void); 
void func2(int); 

Но я не знаю, как это писать для перечислений и структур.

Привет

+3

Вы задумались над * заголовочным файлом * (может быть, тем же самым, где находятся ваши прототипы), а затем в том, что в ваших '.c' файлах? ? – WhozCraig

+0

@WhozCraig Если я поместил его в файл заголовка, тогда определения моих перечислений и структур будут скопированы в каждом .c-файле. Будут ли у меня проблемы в этом случае в будущем? –

+1

@Bush use header guard: http://en.wikipedia.org/wiki/Include_guard – ablm

ответ

1

Пример для functions.c:

#include "header.h" 

int func(void) 
{ 
... 
} 

void func2(int) 
{ 

} 

Пример для header.h:

#ifndef HEADER_H 
#define HEADER_H 

int func(void); 
void func2(int); 

enum eMyEnum 
{ 
eZero = 0, 
eOne, 
eTwo 
}; 

struct sMyStruct 
{ 
int i; 
float f; 
}; 

#endif 
+0

Если я поместил его в файл заголовка, тогда определения моих перечислений и структур будут скопированы в каждом .c-файле. Будут ли у меня проблемы в этом случае в будущем? –

+2

Нет, это не определение, а только объявление. – duDE

+0

Спасибо! Теперь я успокоился. –

1

Объявление структуры:

typedef struct <optional struct name> 
{ 
    int member1; 
    char* member2; 

} <struct type name>; 

Поместите все элементы, которые вы хотите в структуру в формате выше, с любым именем, которое вы хотите. Затем вы используете:

<struct type name> my_struct; 

Объявить экземпляры структуры.

Объявление перечислений:

typedef enum 
{ 
    value_name, 
    another_value_name, 
    yet_another_value_name 

} <enum type name>; 

положить все значения в перечислении, как указано выше, с любым именем вы хотите. Затем вы используете:

<enum type name> my_enum; 

Объявить экземпляры перечисления.

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

  • Нет связанных вопросов^_^