implicit declaration of function ‘msgget’
时间: 2023-07-08 15:32:33 浏览: 125
这个错误通常是因为在代码中没有包含所需的头文件。msgget() 函数需要包含 <sys/ipc.h> 头文件。
你需要在代码中添加以下代码来解决这个问题:
```c
#include <sys/ipc.h>
```
如果已经包含了这个头文件但是仍然出现了这个错误,那么可能是因为你的编译器版本太老,不支持这个函数。可以尝试升级编译器或者使用其他函数来替代 msgget() 函数。
相关问题
Main.c: In function 'main': Main.c:6: error: implicit declaration of function 'scanf' Main.c:6: warning: incompatible implicit declaration of built-in function 'scanf' Main.c:10: error: implicit declaration of function 'printf' Main.c:10: warning: incompatible implicit declaration of built-in function 'printf' Main.c:13: warning: incompatible implicit declaration of built-in function 'printf'
这个错误意味着您在代码中使用了未声明的函数scanf、printf。您需要在代码的开头添加以下头文件:
```c
#include <stdio.h>
```
这将声明scanf和printf函数。如果您已经包含了这个头文件,那么很可能是因为您的编译器不支持C99标准。在这种情况下,您需要将您的编译器升级或者显式地声明这些函数。例如,您可以添加以下代码:
```c
extern int scanf(const char *format, ...);
extern int printf(const char *format, ...);
```
这将显式声明这些函数并解决编译错误。
In function ‘main’: oo.c:19:17: warning: implicit declaration of function ‘msgget’ [-Wimplicit-function-declaration] 19 | msgid = msgget(MSG_KEY, IPC_CREAT | 0666);//创建消息队列 | ^~~~~~ oo.c:26:9: warning: implicit declaration of function ‘msgsnd’ [-Wimplicit-function-declaration] 26 | msgsnd(msgid, &msg, sizeof(msg.choice) + sizeof(msg.pid), 0); | ^~~~~~ oo.c:28:9: warning: implicit declaration of function ‘msgrcv’ [-Wimplicit-function-declaration] 28 | msgrcv(msgid, &msg1, sizeof(msg1.choice) + sizeof(msg1.pid), 1, 0); // 接收玩家1的出拳信息 | ^~~~~~
这些警告是由于在代码中使用了未声明的函数而导致的。你需要在代码开头添加头文件来声明这些函数。对于这些警告,你需要添加以下头文件:
```c
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
```
这些头文件声明了在代码中使用的函数,包括 `msgget`、`msgsnd` 和 `msgrcv`。添加这些头文件可以解决这些警告。
阅读全文