之前已经问过这个问题,但是没有一个解决方案似乎适用于我的代码。这是我的主文件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'
警告:它的范围只是这个定义或声明,可能不是你想要的
在参数列表中声明是什么意思?它引用的参数列表是什么?
答案 0 :(得分:5)
您在三个地方定义message_t
,而您应该只在message.h中定义它。另外,message.c应该包含message.h。