大家好,我的同事和我必须用 C 语言编写一个程序来排序模拟维修商店中的票证系统。
我这样做就像基本上每种类型的票证都有一个结构。
这是一个例子。
typedef struct reparacao
typedef struct entrega
{
char servico_ent;
int numtick_ent;
int dia_entrada_ent;
int mes_entrada_ent;
int ano_entrada_ent;
int hora_entrada_ent;
int min_entrada_ent;
int hora_atend_ent;
int min_atend_ent;
int balcao_ent;
char cond_ent[100];
float valor_pagar;
};
entrega entrega1[100];
然后我写信来争取时间
`time_t t = time(NULL);
struct tm tm = *localtime(&t);
printf("%d-%d-%d %d:%d\n", tm.tm_mday, tm.tm_mon + 1, tm.tm_year + 1900, tm.tm_hour, tm.tm_min);
// verificar se o horário está entre as 8H e as 22H
if(tm.tm_hour<8 || tm.tm_hour>=22)
{
printf("\nNao pode recolher ticket. Horario: 8:00h-21:59h\n\n");
}else
{
//Guardar dados no vetor
printf("Ticket numero %d\n\n", natend_ent);
entrega1[j].numtick_ent = natend_ent;
entrega1[j].servico_ent = 'Entrega';
entrega1[j].dia_entrada_ent = tm.tm_mday;
entrega1[j].mes_entrada_ent = tm.tm_mon+1;
entrega1[j].ano_entrada_ent = tm.tm_year + 1900;
entrega1[j].hora_entrada_ent = tm.tm_hour;
entrega1[j].min_entrada_ent = tm.tm_min;
natend_ent++;
j++;
}`
什么可能导致错误“请求非结构或 union 中的成员‘blablabla’”?
最佳答案
您已将 entrega1
声明为一个数组,其元素为 entrega
类型,但所提供的代码未定义 entrega
类型,并且在特别是,该标识符未定义为表示结构类型。你的编译器也应该提示这一点。通常最好从顶部开始处理警告和错误,因为一处错误代码导致多个错误的情况并不罕见。
具体来说,在这种情况下,您的 typedef
关键字不会执行任何操作,因为您没有声明要应用它们的任何标识符。也许您有一个相对常见的误解:typedef
用于定义新类型,尤其是结构类型。它不是。它用于定义类型的别名。您声明的类型是 struct entrega(struct
关键字是类型名称的一部分),您可以在任何地方使用它。如果您希望能够省略 struct 部分,那么为该世界使用 typedef 的正确方法是:
typedef struct entrega {
char servico_ent;
/* ... other members ... */
float valor_pagar;
} entrega;
同样,您可以将 typedef 与结构定义分开:
struct entrega {
char servico_ent;
/* ... other members ... */
float valor_pagar;
};
typedef struct entrega entrega;
后者也许比前者更有启发性。允许您交换 typedef
和结构定义的顺序也可能具有启发性。
关于c - 请求非结构或 union 中的成员 'something',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53978085/