我尝试在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
定义中的引用使用(即使用指针)。这样,编译器在分析代码时就不需要知道类型的实际内容。