c编译器警告:在参数列表中声明'struct x'

时间:2015-12-04 06:52:22

标签: c struct

之前已经问过这个问题,但是没有一个解决方案似乎适用于我的代码。这是我的主文件server.c

#include <stdlib.h>
#include <unistd.h>
#include "message.h"

int main(int argc, char *argv[]) {
    // do stuff
    return 0;
}

这是我收录的文件message.c

#include <stdlib.h>
#include <unistd.h>

struct message_t {
    int field1;
    int field2;
};

int sendMessage(struct message_t *message) {
    // do stuff
    return 0;
}

我还有一个标题文件message.h

#include <stdlib.h>
#include <unistd.h>

struct message_t {
    int field1;
    int field2;
};

int sendMessage(struct message_t *message);

当我编译server.c和message.c时,我在message.c声明sendMessage的行中收到此警告:     警告:在参数列表中声明'struct message_t'     警告:它的范围只是这个定义或声明,可能不是你想要的

在参数列表中声明是什么意思?它引用的参数列表是什么?

1 个答案:

答案 0 :(得分:5)

您在三个地方定义message_t,而您应该只在message.h中定义它。另外,message.c应该包含message.h。