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

Kai*_*lyn 0 c struct

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

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

int main(int argc, char *argv[]) {
    // do stuff
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我的包含文件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;
}
Run Code Online (Sandbox Code Playgroud)

我还有一个头文件message.h:

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

struct message_t {
    int field1;
    int field2;
};

int sendMessage(struct message_t *message);
Run Code Online (Sandbox Code Playgroud)

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

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

car*_*iac 5

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