我在这个结构声明中找不到问题。由于某种原因,变量 token
不存在。
packet.h:
struct packet
{
unsigned seq_number;
char *arg;
unsigned msg_len;
unsigned short error;
unsigned long token;
enum type
{
PING,
LS,
WRITE,
READ,
APPEND,
REGISTER,
DELETE
} msg_type;
};
struct packet p_init(unsigned seq_number, const char *arg, enum type t);
void attach_token(unsigned long token, struct packet *restrict p);
const void *p_encode(struct packet p);
struct packet p_decode(const void *p);
void p_cleanup(struct packet p);
struct packet p_error(unsigned seq_number, const char *arg, enum type t, unsigned long token);
packet.c:
我只包含了第一个函数的实现。
#include "packet.h"
#include <string.h>
#include <stdlib.h>
struct packet p_init(unsigned seq_number, const char *arg, enum type t)
{
struct packet p = {.seq_number = seq_number, .arg = malloc(strlen(arg) + 1),
.msg_len = strlen(arg), .msg_type = t, .error = 0, .token = 0};
strcpy(p.arg, arg);
return p;
}
错误日志:
这只是第一个错误。有几个与此类似,但在其他功能中。
packet.c:8:77: 错误:‘struct packet’没有名为‘token’的成员
编译:
gcc -o master src/master.c lib/comm.c lib/packet.c lib/interface.c src/fs/fs.c src/server_table.c src/server/file_exec.c src/worker_admin.c -DDEBUG -DLOG -Ilib -lpthread