C 枚举和结构的声明
我已经编写了一些文件:main.c、functions.c、functions2.c和header.h。functions.c和functions2中的一些函数使用我的一些枚举和结构 我必须将枚举和结构放在哪里?如何在functions.c和functions2.c中为它们编写声明?我的函数(来自不同的文件)必须看到它们 例如,我在header.h中编写了此类函数的声明:C 枚举和结构的声明,c,c89,C,C89,我已经编写了一些文件:main.c、functions.c、functions2.c和header.h。functions.c和functions2中的一些函数使用我的一些枚举和结构 我必须将枚举和结构放在哪里?如何在functions.c和functions2.c中为它们编写声明?我的函数(来自不同的文件)必须看到它们 例如,我在header.h中编写了此类函数的声明: int func(void); void func2(int); #ifndef HEADER_H #define HEA
int func(void);
void func2(int);
#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
但我不知道它是如何为枚举和结构编写的
关于函数的示例。c:
#include "header.h"
int func(void)
{
...
}
void func2(int)
{
}
header.h的示例:
int func(void);
void func2(int);
#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
声明结构:
typedef struct <optional struct name>
{
int member1;
char* member2;
} <struct type name>;
typedef enum
{
value_name,
another_value_name,
yet_another_value_name
} <enum type name>;
typedef结构
{
国际会员1;
char*member2;
} ;
以上述格式将所需的任何成员放入结构中,并使用所需的任何名称。
然后使用:
<struct type name> my_struct;
myu结构;
声明结构的实例
声明枚举:
typedef struct <optional struct name>
{
int member1;
char* member2;
} <struct type name>;
typedef enum
{
value_name,
another_value_name,
yet_another_value_name
} <enum type name>;
typedef枚举
{
值和名称,
另一个\u值\u名称,
还有另外一个名字
} ;
按上面所述在枚举中放入任意值,并使用所需的任意名称。
然后使用:
<enum type name> my_enum;
my_enum;
声明枚举实例。是否考虑过头文件(可能与原型所在的头文件相同),然后将其包含在
.c
文件中@WhozCraig如果我将其放在头文件中,那么枚举的定义和结构将复制到each.c文件中。在这种情况下,我将来会遇到问题吗?@Bush use header guard:@Bush abim已经发表了评论,下面的答案已经包括在内,使用header guard可以确保头数据的多个包含只被拉入源文件一次。在这和声明枚举和结构的正确语法之间,您应该可以很好地使用。@Bush和header guard都不是必需的。这里我们讨论的是声明。如果我把它放在头文件中,那么枚举的定义和结构将复制到each.c文件中。在这种情况下,我将来会遇到问题吗?不,这不是定义,只是声明。谢谢!现在我平静下来了。