我有两个文件(每个文件都是.h和.c)。我在其中一个头文件中定义了以下结构:
typedef struct Client{
int fd;
struct in_addr ipaddr;
struct Player * p;
struct Client * next;
}Client;
我尝试了很多不同的typedef和struct的组合,但我仍然得到了error: redefinition of ‘struct client’
我开始认为这与两个头文件包含彼此的事实有关。
我是否正确创建了此结构?当在彼此包含头文件时,我应该遵循一些基本规则吗?
答案 0 :(得分:2)
如果你有两个相互依赖的结构,你可以转发声明其中一个结构。
typedef struct Client Client; // forward declaration of struct Client
typedef struct Player {
...
Client *client;
...
} Player;
struct Client{
int fd;
struct in_addr ipaddr;
Player * p;
Client * next;
};
答案 1 :(得分:0)
typedef struct x3 { ... } x3;
对于标记和typedef使用相同的名称是合法的,如果可能不明确,因为它们位于不同的名称空间中。