在 C 中预定义结构



我尝试在C中执行此操作:

typedef struct s_match_fptr
{
  char *str;
  int  (*funcptr)(t_client *client, char **command);
} t_match_fptr;
typedef struct s_client
{
  int socket_fd;
  int port;
  char *server_ip;
  struct sockaddr_in s_in;
  t_match_fptr  *db;
} t_client;

关键是我尝试声明一个函数指针,该指针在我的t_match_ptr结构中接受参数 a t_client结构。

另外,我的结构t_client有一个t_match_ptr数组。

为简化起见,A 需要在 B 之后声明,B 需要在 A 之后声明。

那么,有没有办法在t_match_ptr声明之前"预先申报"t_client呢?

谢谢你,对不起英语不好。

前向声明。在开头添加:typedef struct s_client t_client;

现在编译器将在s_match_fptr中遇到时知道类型t_client。请注意,该类型只能通过s_match_fptr定义中的引用使用(即使用指针)。这样,编译器在分析代码时就不需要知道类型的实际内容。

最新更新