gpt4 book ai didi

c - 不允许指向不完整类型的指针,定义全局结构

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:44 24 4
gpt4 key购买 nike

好吧,我遇到了困难,我无法使用其他 .c 文件中的结构指针,总是当我将指向结构的指针传递给与结构不在同一个 .c 文件中的函数时,这样的消息让我很烦。而且当我无法从其他 .c 文件访问一个结构的结构成员时,我 g我究竟做错了什么?我的包括?这是我的两个结构 .h 文件的例子:

服务器.h :

#ifndef SERVER_H
#define SERVER_H
typedef struct Server_s* Server;

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Company.h"
#include "Client.h"
#include "Order.h"
#include "SMSServer.h"
#include "MMSServer.h"

Server InstallServer(CompanyL pcompanyList , ClientL pclientList , OrderL porderList);
void RunServer(Server pmainServer);
void OrdersToDoPerTimestamp(FILE *result , Server pmainServer , int currentTimestamp);
#endif

客户端.h :

#ifndef _CLIENT_H
#define _CLIENT_H
typedef struct Client_s* Client;
typedef struct ClientNODE* ClientL;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Server.h"
ClientL InstallClients(CompanyL pcompanyList , char* pfileName);
void AppendClientNode(ClientL pclientList , CompanyL pcompanyList , char* ptelNumber , char* pclientType , char* pclientCredit);
Client FindClient(ClientL pclientList, char* pclientTelNumber);
double getCostAndChargeSMSMessage(Client sourceNumber , Company sourceNumberCompany);
#endif

我可以在其他 .c 文件中创建一个打击类型,但以后无法访问其成员?请指导我一下。

最佳答案

如果你想给其他文件访问结构成员,你必须把完整的结构定义放到头文件中。例如:

#ifndef SERVER_H
#define SERVER_H
struct Server_s {
int id;
};
typedef struct Server_s* Server;
#endif

您当前使用的无定义习惯用法是为了向外部用户隐藏实现细节:其他人可以传递和接收指向结构的指针,但只有定义文件 (Server.c) 可以使用结构成员。

关于c - 不允许指向不完整类型的指针,定义全局结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com